C# 如何使用派生类C在Windows.Forms中实现额外功能#

C# 如何使用派生类C在Windows.Forms中实现额外功能#,c#,visual-studio,C#,Visual Studio,我希望能够创建新的windows窗体,通过“中间人”派生类自动内置一些额外的功能 额外的功能使用一组Win32 API调用,这些调用钩住表单的某些控件/事件并将其嵌入另一个窗口(如将自定义表单嵌入记事本或excel窗口) 我创建了一个Form类的派生类,具有以下额外功能: public class MT4ChartForm : Form 我没有启动windows窗体项目,只是添加了窗体作为MT4ChartForm类的基类 这里的想法是,如果我需要创建另一个windows.form以嵌入到其他地

我希望能够创建新的windows窗体,通过“中间人”派生类自动内置一些额外的功能

额外的功能使用一组Win32 API调用,这些调用钩住表单的某些控件/事件并将其嵌入另一个窗口(如将自定义表单嵌入记事本或excel窗口)

我创建了一个Form类的派生类,具有以下额外功能:

public class MT4ChartForm : Form
我没有启动windows窗体项目,只是添加了窗体作为MT4ChartForm类的基类

这里的想法是,如果我需要创建另一个windows.form以嵌入到其他地方,我将创建一个新的windows form项目,该项目将对我进行如下设置:

public class Form1 : Form
我只想改名为:

public class Form1 : MT4ChartForm
希望将MT4ChartForm的功能自动“注入”到我的新表单中

问题在于可视化表单编辑器不喜欢它(会出现错误屏幕),并且可能会在项目设置中导致其他冲突:(


在不违反C#规则的情况下,我如何实现我正在尝试的目标?

这里的参考资料提供了帮助

我发现,设计器需要基类有一个没有参数的构造函数

    //constructor
    public MT4ChartForm(IntPtr in_hwnd) : base()
    {
        _hwnd = in_hwnd;            
    }

    //needed by form designer
    private MT4ChartForm() : base() { }

我创建了一个私有构造函数,以避免与派生类混淆,设计师对此很满意。

删除了一个错误屏幕
该屏幕显示了什么?通常情况下,您试图做的工作是有效的,但有一些限制。最重要的是,MT4ChartForm不能只是一个类,它需要所有样板代码由@P.Kouvarakis Thanke you的设计人员创建可能的副本-关于样板代码是什么,你有什么资源吗?@MarkBenningfield谢谢,我会查出来的。