未处理的“System.MissingMethodException”类型的异常出现在 mscorlib.dll 中其他信息:没有为该对象定义无参数的构造函数。

解决方案 »

  1.   

    参考一下public class WM 

    public const int USER = 0x0400; 
    public const int TEST1 = USER+1; 
    } 我们在Form1中添加一个按钮,并为该按钮添加事件处理代码向主视窗发送TEST1自定义消息,具体代码如下: 
    protected void button1_Click (object sender, System.EventArgs e) 

    SendMessage(WM.TEST1,100,200); 
    } 消息已经发出了,在Form1中我们如何对该消息作出响应呢?我们可以重载 DefWndProc方法。  protected override void DefWndProc ( ref System.WinForms.Message m ) 

    switch(m.msg) 

    case WM.TEST1: 
    ///string与MFC中的CString的Format函数的使用方法有所不同 
    string message = string.Format("收到消息!参数为:{0},{1}",m.wParam,m.lParam); 
    MessageBox.Show(message);///显示一个消息框 
    break; 
    default: 
    base.DefWndProc(ref m);///调用基类函数处理非自定义消息。 
    break; 


      

  2.   

    这样得到的参数不是我传的参数,是IntPtr类型的
      

  3.   

    我自己搞定了,自定义一个结构
    const int WM_MYDATA =0x10000;
    [DllImport("User32")]
    public static extern bool  SendMessage(
    IntPtr hWnd,      // handle to destination window
    int  Msg,       // message
    ref MyStruc wParam,  // first message parameter
    ref MyStruc  lParam   // second message parameter
    );
    public struct MyStruc
    {
         public string str;
    }
    protected override void WndProc(ref System.Windows.Forms.Message m) 
    {

    if (m.Msg == WM_MYDATA) 
    {

    MyStruc struc=new MyStruc();

     struc=(MyStruc)m.GetLParam( struc.GetType());
    MessageBox.Show( struc.str);

    return;
    }
    base.WndProc(ref m);
    }
    private void button1_Click(object sender, System.EventArgs e)
    {
    MyStruc struc=new MyStruc();
    struc.str="收到消息";
    SendMessage((IntPtr)(0xffff),WM_MYDATA, ref struc,ref  struc);

    }