2013-05-22 52 views
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。我无法在表单设计器上看到这样做的任何方式。

是否有可能做到这一点(最好是与设计师,但必要时与代码)?

回答

1

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

让它成为朋友允许派生的窗体类来修改控件属性。如果基本形式类存在于另一个程序集中,那么Friend不够好,您需要Public。

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

+0

出于某种原因,我有一个基于所有控件(C#VS2013)上设置公共修饰符的窗体。在子类中,当我在设计器中加载表单时,我的控件属性在“属性”窗口中变为灰色。我从来没有见过这样的行为 - 可能只是我。它驱使我疯了,我可能会开始一个新的线程。 – Andez

1

在我的VB.NET WinForms应用程序中,我继承了窗体,我可以在设计器中获取继承的控件,并将它们移动到窗体上的非继承控件上。

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

+0

现在你来提起它,不动的控件确实锚定在窗体的右下角;在这种情况下是一个理想的事情。只是我有时希望他们被锚定在一个稍微不同的地方。这些控件的属性网格完全禁用。 –

+0

感叹。删除基类中的锚定不允许控件在派生类中移动。还是)感谢你的建议。 –

+0

你想要移动什么样的控件?我知道一些更复杂的控件(像DataGridView这样的具有行的内部集合的控件)和一些第三方控件只是不支持设计器中的可视继承。 – XN16

相关问题