我正在编写一个应用程序,其中我有不确定数量的Forms
,需要一定的弹出功能(类似于MSN,屏幕右下角的一个小窗口)。我写了第一个表格,然后认为我可以复制文件来制作一个新表格。到现在为止还挺好。稍后我意识到我可以将子类化为Form,编写我的弹出代码,然后将我的新PopupForm
类子类化为其他形式,以简化重写弹出代码。所以我这样做了,但现在我的表单在Designer中没有正确显示!它们是完全白色的(没有背景图像或控件),我无法将新控件拖到它上面。我尝试放置
[Designer("System.Windows.Forms.Design.FormDocumentDesigner, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(IRootDesigner))]
[DesignerCategory("Form")]
我的新表单上的Form
类的属性,但它没有帮助。我需要能够改变我的表格内容,而且我没有看到什么是错的,所以这既烦人又令人困惑。
答案 0 :(得分:2)
如果你有多个构造函数,请确保调用调用基本无参数构造函数的构造函数,即包含InitializeComponent
的构造函数。
class BaseForm
{
public BaseForm()
{
InitializeComponent();
}
// not good -> does not call InitializeComponent() or :this()
public BaseForm(int someParameter)
{ }
public BaseForm(string someParameter)
: this() // good -> calls InitializeComponent()
{ }
public BaseForm(byte b)
{
// good -> InitializeComponent is called explicitly
// (but call to this() above is preferred)
InitializeComponent();
}
}
class DerivedForm : BaseForm
{
public DerivedForm()
: base(5) // not good -> calls the "bad" base constructor
{ }
// good -> base() constructor is implicitly called
public DerivedForm(double x)
{ }
public DerivedForm(string someParam)
: base(someParam) // good -> BaseForm(string) will call InitializeComponent
{ }
}