启动代码没有运行?

时间:2012-03-28 21:22:12

标签: c#

在我的应用程序中,我在我的MainForm类中调用了一个名为OnStart的启动方法,该方法定义如下:

public void OnStart()
{
    //code
}

当我从Main方法调用它时,它不会运行。我究竟做错了什么? (哦,和OnStop方法一样。)

这是我的Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Logger
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            MainForm mainForm = new MainForm();
            Application.Run(mainForm);  

            AppDomain.CurrentDomain.ProcessExit += new EventHandler (mainForm.OnStop);

            mainForm.OnStart();
        }
    }
}

4 个答案:

答案 0 :(得分:5)

Application.Run将一直挂起,直到您的表单关闭为止,因此您需要在OnStart之前和OnStop之后致电。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace Logger
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            MainForm mainForm = new MainForm();
            mainForm.OnStart();
            Application.Run(mainForm);  
            mainForm.OnStop()

        }
    }
}

答案 1 :(得分:1)

您可能希望从表单的构造函数中运行OnStart()方法。在表单关闭之前,不会调用当前代码。与form.Close();

的事件处理程序相同

答案 2 :(得分:1)

我建议你从MainForm_Load事件(或构造函数)调用这些方法。在关闭表单之前,Application.Run()方法之后不会发生任何事情。

答案 3 :(得分:1)

您无法在 Application.Run(mainForm);之后添加cals ,它将无法正常工作。 例如,添加您要在Form的{​​{1}}覆盖上运行的代码。