我的表单启动后如何执行代码?

xbo*_*nez 4 c# winforms

我是Windows Forms编程的新手,并不太确定编程的正确方法.

这是我的困惑.

我有一个表格:

    public partial class ReconcilerConsoleWindow : Form
    {
        public ReconcilerConsoleWindow()
        {
            InitializeComponent();
            SetLogText("Started");

        }

        public void SetLogText(String text)
        {
            string logInfo = DateTime.Now.TimeOfDay.ToString() + ": " + text + Environment.NewLine;
            tbx_Log.AppendText(logInfo);
        }


    }
Run Code Online (Sandbox Code Playgroud)

在我的Program.cs类中,我有以下代码:

    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            ReconcilerConsoleWindow window = new ReconcilerConsoleWindow();
            Application.Run(window);

            if (CallSomeMethod() == true)
            {
                 window.SetLogText("True");
            }                     

        }


    }
Run Code Online (Sandbox Code Playgroud)

现在,一旦Application.Run命令显示窗口,程序就会在此时停止.窗口启动时如何进行进一步处理?

以上只是一个例子.我的目的是读取XMl文件并显示datagridview.随后,我观察XMl文件的变化,每次进行更改时,我都想刷新datagridview.但是,一旦控制台弹出,我如何继续我的程序并动态更改表格上显示的信息?

C. *_*oss 10

之后发生的处理Application.Run通常在表单的Load事件处理程序中触发.Load通过双击窗体上的任何空白区域,可以在Visual Studio中轻松创建方法.

这看起来事情是这样的.

    private void ReconcilerConsoleWindow_Load(object sender, EventArgs e)
    {
        if (CallSomeMethod())
        {
            this.SetLogText("True");
        }
    }
Run Code Online (Sandbox Code Playgroud)

这是(正如其他几个答案所述)的原因是主线程(被调用的线程Application.Run(window))现在用于操作表单的消息泵.您可以使用表单或表单的事件通过消息继续在该线程上运行.或者你可以开始一个新的主题.这可以在main方法中完成,然后调用Application.Run(window),但大多数人会Form_Load在表单构造函数中执行此操作,以确保表单设置等.一旦Application.Run返回,所有表单现在都关闭.