重写方法不会被调用

时间:2011-07-05 11:09:01

标签: c# winforms override

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)

当我更改下面的代码时

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

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

任何人都能解释我为什么会这样吗?

3 个答案:

答案 0 :(得分:5)

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

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

您将表单作为参数传递给Application.Run函数调用的顶部,它允许它使用您的表单,第二种情况是它不知道使用什么表单。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

为什么要这样,如果在第二个代码示例中没有在App中显示和使用的真实表单?