overrided方法不会被调用

问题描述:

public partial class Form1 : Form 
{ 
    protected override void WndProc(ref Message m) 
    { 
     base.WndProc(ref m); 
    } 
} 

[STAThread] 
static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
} 

当我运行上面的代码,它调用的方法protected override void WndProc(ref Message m)overrided方法不会被调用

当我改变了代码像下面

Form1 form1 = new Form1(); 
Application.Run(); 

它没有调用该方法protected override void WndProc(ref Message m)

任何人都可以解释为什么会发生这种情况?

+0

这似乎是一个愚蠢的问题:P – Lamps

当您调用Application.Run()时,您正在运行没有窗体的应用程序。

请参阅 http://msdn.microsoft.com/en-us/library/system.windows.forms.application.run.aspx 的区别。

您将窗体作为参数传递给Application.Run函数调用的第一个函数,它允许它使用表单,第二种情况下它不知道要使用哪种表单。

为什么它应该如果在第二个代码示例中没有显示并在应用程序中使用真正的表单?

当您调用Application.Run()时,您正在运行没有窗体的应用程序。