【问题标题】:Does Visual Inheritance work in VS2008?视觉继承在 VS2008 中有效吗?
【发布时间】:2009-01-14 02:11:23
【问题描述】:
我有一个基本形式。我将 Ok 和 Cancel 按钮放在表单的右下角,并将它们锚定在 Bottom 和 Right。
继承的表单不支持确定和取消按钮的锚属性。以下是重现的确切步骤。
1- 创建一个带有位于底部/右侧的按钮的基本表单。将其固定在底部,对。
3- 创建一个继承自步骤 1 中创建的基本表单的新表单。
4-增加(在设计器中)第二个表单的高度或宽度。
5- 你会看到按钮没有完全移动,因此破坏了它的锚属性。
是我做错了什么,还是 VS2008 根本不遵守基本表单上控件的锚属性?
谢谢。
【问题讨论】:
标签:
winforms
visual-studio-2008
visual-inheritance
【解决方案1】:
嗯,按照你的步骤,完美地工作......
确保继承的表单没有覆盖设计器中的某些属性...
我的“继承形式”只有这个:
private void InitializeComponent()
{
this.SuspendLayout();
//
// Form2
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.ClientSize = new System.Drawing.Size(296, 154);
this.Name = "Form2";
this.ResumeLayout(false);
}
【解决方案2】:
请注意正在发生一些非常顽皮的事情。基类的私有字段的属性正在发生变化(Location 属性),这完全违反了 .NET 可访问性规则。这在一定程度上是可行的,但是一旦你运行你的项目就会耗尽气体。修复很简单,将按钮的 Modifiers 属性从 Private 更改为 Protected。
【解决方案3】:
它对我有用。
您如何创建继承的表单?我去
- 构建
- 新增 -> Windows 窗体
- 选择 Windows 窗体
- 选择继承的表单
- 选择原始表单
按钮按预期移动。