Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从dll类重写窗体方法_C#_Overriding - Fatal编程技术网

C# 从dll类重写窗体方法

C# 从dll类重写窗体方法,c#,overriding,C#,Overriding,我想构建处理system.windows.forms.form的dll文件。如何从dll类(如(WndProc))重写任何form方法 我的项目是“类库”而不是“WindowsFormsApplication”您可以通过以下方式轻松覆盖该方法: protected override void WndProc(ref Message m){...} 在这里您可以找到一些示例:如果您将表单作为参数传递,那么您拥有的是类的实例,而不是定义。您必须创建自己的表单,重写前面提到的方法,然后将此新表单传递

我想构建处理system.windows.forms.form的dll文件。如何从dll类(如(WndProc))重写任何form方法


我的项目是“类库”而不是“WindowsFormsApplication”

您可以通过以下方式轻松覆盖该方法:

protected override void WndProc(ref Message m){...}

在这里您可以找到一些示例:

如果您将表单作为参数传递,那么您拥有的是类的实例,而不是定义。您必须创建自己的表单,重写前面提到的方法,然后将此新表单传递给MyDll构造函数。例如: 创建一个新的类库项目。添加两个文件: -MyDllClass.cs -MyForm(添加新->窗口窗体)

然后在MyDllClass.cs中

public MyDllClass(Form your_form_here)
{
    //your code here
}

非常感谢,我只是想知道我是否可以覆盖dll文件中的任何表单方法,我的项目是“类库”而不是“WindowsFormsApplication”,这在技术上是可能的,但非常不明智。您可以从NativeWindow派生自己的类,并使用表单句柄调用其AssignHandle方法。当WndProc()覆盖得到WN\u NCDESTROY时,再次调用ReleaseHandle()。有很多方法可以帮你一臂之力。非常感谢你,我只是想知道我是否可以覆盖dll文件中的任何表单方法,我的项目是“类库”而不是“WindowsFormsApplication”
public partial class MyForm : Form
{    
     protected override void WndProc(ref Message m)
    { 
        //your code here
        base.WndProc(ref m);
    } 
}
public MyDllClass(Form your_form_here)
{
    //your code here
}