1

我正在制作一个简单的小型 Windows 应用程序。这是我的主要功能:

static void Main()
{

    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);

    // This will be my Form object  
    Form1 robotPath = new Form1();

    Application.Run(robotPath);

    // at this point I'll try to make changes to my object
    // for instance I'll try to change a background image
    robotPath.changeImage();
}

但是,更改我的对象后,更改不会反映在输出窗口中(背景未更改)。我试过 robotPath.refresh() 和 robotPath.invalidate() 但背景仍然没有改变。但是,当我使用按钮单击事件调用 changeImage 函数时,它可以工作。但是我希望在不使用按钮/鼠标事件的情况下对其进行更改。(背景随着 Form1 对象的更改而更改)有什么建议吗?

4

1 回答 1

3
Application.Run()

在主窗体关闭之前不会返回。之后运行的所有代码Application.Run()在程序关闭之前不会运行。这显然不是你想要的。

您可以通过重新排序来轻松解决问题main

Form1 robotPath = new Form1();
robotPath.changeImage();
Application.Run(robotPath);

另一种方法是将调用移动changeImage到 的构造函数中Form1,或者在表单生命周期的早期触发的某个事件中,例如Load. 此选项更好地封装了表单的行为。

于 2012-05-19T11:13:18.943 回答