我希望能够通过“中间人”派生类自动创建具有一些额外功能的新窗体。
额外的功能使用一堆Win32 API调用,这些调用挂钩到表单的某些控件/事件中,并将其嵌入到另一个窗口中(比如将自定义表单嵌入到记事本或excel窗口中)
我创建了一个Form类的派生类,其具有如下额外功能:
public class MT4ChartForm : Form
我没有启动Windows窗体项目,我只是添加了Form作为我的MT4ChartForm类的基类
这里的想法是,如果我需要创建另一个windows.form以嵌入其他地方,我会创建一个新的Windows窗体项目,这将设置我像:
public class Form1 : Form
我只想重命名为:
public class Form1 : MT4ChartForm
希望自动将MT4ChartForm的功能“注入”我的新表单。
问题是视觉表单编辑器不喜欢它(删除错误屏幕),它可能会导致项目设置中的其他冲突:(
如何实现我想要做的事情,这不会破坏C#的规则?
答案 0 :(得分:0)
这里的资源有所帮助。
我发现,设计者需要基类拥有一个没有参数的构造函数。
//constructor
public MT4ChartForm(IntPtr in_hwnd) : base()
{
_hwnd = in_hwnd;
}
//needed by form designer
private MT4ChartForm() : base() { }
我创建了一个私有构造函数,以避免与派生类混淆,设计人员对此感到满意。