【问题标题】:Update form from main method从 main 方法更新表单
【发布时间】:2019-03-11 19:42:43
【问题描述】:

所以我有模板 C# windows 窗体,并将 debugInstructionsLabel 标签公开,以便我可以从窗体外部对其进行编辑,然后在 main 中添加几行:

namespace test {
    static class Program {
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Form1 form = new Form1();
            Application.Run(form);
            form.debugInstructionsLabel.Text += "Aaaaaaa";
            form.Refresh();
            form.Update();
            form.Invalidate();
            Application.DoEvents();
        }
    }
}

但是,这实际上并没有改变表单中的任何内容,我将如何更新文本?

编辑:好像Application.Run 没有返回,我应该创建另一个线程还是处理表单类中的所有内容?

【问题讨论】:

  • Application.Run() 启动一个 Windows 消息泵,该泵在应用程序终止之前不会终止。届时,该函数将返回。如果要修改表单,请在调用Application.Run之前修改其属性见stackoverflow.com/questions/2222365/what-is-a-message-pump
  • @Amy 或者只使用form.Show() 显示表单,根本不要使用Application.Run
  • @LuccaFerri 在这种情况下,不打电话给Application.Run 并不能真正回答问题或解决任何问题。你是对的,这是一个选项。
  • @Amy 对不起我的无知,但我可以从他的代码中了解到,他正在使用控制台应用程序,并将在他的控制台应用程序运行时使用它来更新表单。我没有看到在那里使用 Application.Run 的意义,因为它应该挂起线程。
  • 他没有使用控制台应用程序。每个 winforms 应用程序都有一个main 方法。 Application.Runform.Show 基本上是等价的。

标签: c# winforms


【解决方案1】:

您应该将更改标签文本的行放在表单的 onLoad 事件中。即使在 initializecomponents 运行后的构造函数上也可以。有了这个微小的改变,它就可以工作了。

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多