0

我创建了一个从另一种形式派生的形式,因此:-

Public Class MyForm
    ' ...etc
End Class

Public Class MyDerivedForm
    Inherits MyBaseForm
    ' ...etc
End Class

Public Class MyOtherDerivedForm
    Inherits MyBaseForm
    ' ...etc
End Class

这很好用,我可以使用表单设计器将控件添加到派生表单。但我想稍微移动一些继承的控件,MyDerivedForm而不会干扰MyBaseFormMyOtherDerivedForm. 我在表单设计器上看不到任何这样做的方法。

是否有可能做到这一点(最好与设计师合作,但如有必要则使用代码)?

4

2 回答 2

1

在我的 VB.NET WinForms 应用程序中,我继承了表单,我可以在设计器中抓取继承的控件,然后像使用表单上的非继承控件一样移动它们。

然而,我注意到过去有两件事阻止了这一点。如果您更改基本窗体上控件的位置,或更改某些定位属性(例如锚点或停靠),那么这可以(但不总是)移动您继承的控件。此外,我无法在早期版本的 .NET(我相信是 2.0)中移动一些继承的控件,但我从来没有弄清楚原因,所以我不得不通过属性网格来更改位置。

于 2013-05-22T08:39:26.310 回答
1

这不是典型的 VB.NET 问题,所以不太确定这里发生了什么。当基类中控件的 Modifiers 属性为 Private 时,您将在继承的控件上看到锁定图标,并为继承的控件显示灰色的属性窗口。Winforms 设计器观察基类成员的可访问性。私人会员不能乱来。Modifiers 的默认值在 VB.NET 中为 Friend,在 C# 中为 Private。

Make it Friend 允许派生的表单类修改控件属性。如果基表单类存在于另一个程序集中,那么 Friend 还不够好,您将需要 Public。

Anchor 属性可能是一个问题,但前提是您锚定在右侧或底部。如果控件以这种方式锚定,则当派生表单的大小与基本表单不同时,该控件具有最终出现在错误位置的诀窍。通过不在基类的右侧/底部锚定并更改派生类中的锚点来简单地避免。

于 2013-05-22T09:12:13.383 回答