c# – Winform继承和默认表单大小
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – Winform继承和默认表单大小,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2260字,纯文字阅读大概需要4分钟。
内容图文
![c# – Winform继承和默认表单大小](/upload/InfoBanner/zyjiaocheng/783/86b9055a31a44aa9a4a0bd75901f138c.jpg)
我正在使用的应用程序将具有许多具有许多共享功能的表单.例如,每个表单都有一个DataGridView,许多相同的按钮,大部分相同的UI代码等等.
我想通过创建这个通用表单的基本版本来实现这一点,为所有这些非常相似但不完全相同的子表单创建子类,并为每个表单提供所需的其他控件和功能.他们
我已经发现它有助于使基本表单的控件受到保护,因为这样可以使锚定等工作变得有效.但是,我还没有找到一种方法来自动使派生形式与基本形式相同.
经验告诉我应该有一个简单的方法来做到这一点.虽然在创建后立即为每个派生形式手工输入所需尺寸并不是什么大问题,但我更愿意尽可能地使所有内容变得干净,简单和自动.
解决方法:
我觉得有趣的是,你的派生表单不会自动从其基本表单继承大小,因为这应该可以在你不必对它做任何事情的情况下工作.
可疑的问题原因:
我怀疑您的问题是因为您使用Visual Studio的Forms Designer来编辑表单.无论何时编辑表单,Windows窗体设计器都会在表单的InitializeComponent方法中生成所需的代码.在所有生成的代码中,都是设置表单大小的赋值,即使它与基本表单的大小相同.因此,如果您希望派生表单与基本表单具有相同的大小,即使在创建派生表单后更改基本表单的大小,也可能必须手动注释掉这些分配. (但是,我不知道这是否会导致控件的定位和布局进一步出现问题.)
// Code to be commented out in your derived form's InitializeComponent method:
this.AutoScaleDimensions = new System.Drawing.SizeF(...);
this.ClientSize = new System.Drawing.Size(...);
一旦这些行被注释掉,基本形式的InitializeComponent中设置的大小将用于派生形式.
解决方案解决方案:
您可以执行以下操作,这样您每次编辑表单时都不必手动注释掉设计器生成的代码:
创建从您的基本表单派生的表单;我们称之为FrozenBaseForm.您将从此类派生所有其他表单,而不是直接从基本表单派生.现在,在这个“中间”类中,您定义了一个新属性ClientSize:
public class FrozenBaseForm : BaseForm
{
new public SizeF ClientSize
{
get { return base.ClientSize; }
set { }
}
}
这将导致ClientSize的所有赋值完全没有效果,因此保留了基本表单的大小.这听起来像是一个说实话的黑客,但它似乎工作.您可能必须以相同的方式隐藏Size属性.
如上所述,从FrozenBaseForm而不是直接从BaseForm派生您的表单:
public class DerivedForm1 : FrozenBaseForm { ... }
public class DerivedForm2 : FrozenBaseForm { ... }
...
另一种选择(如果一切都失败,最后的选择):
作为最后的手段,您可以简单地忘记Forms Designer并在代码编辑器中手动定义派生表单(尽管我个人不想这样做):
public class DerivedForm : BaseForm
{
public DerivedForm()
{
// make all necessary changes to the base form:
...
}
}
内容总结
以上是互联网集市为您收集整理的c# – Winform继承和默认表单大小全部内容,希望文章能够帮你解决c# – Winform继承和默认表单大小所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。