2012-05-19 121 views
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对象的更改,背景会发生变化) 任何建议?

回答

3
Application.Run() 

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

您可以通过重新安排你的main解决这个问题很容易就够了:

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

另一种方法是将呼叫转移到changeImage进入Form1构造函数,或将触发早在窗体的生活中的一些事件,例如Load。该选项更好地封装了表单的行为。

+0

感谢大卫,我实际上通过在Application.Run()之前创建一个线程来解决问题,该线程在需要时调用changeImage(),并照顾我想要的东西! – sj47sj