【问题标题】:WinForm Refreshing IssueWinForm 刷新问题
【发布时间】:2010-07-01 00:21:35
【问题描述】:

我有一个程序,可以打开多个表单,当表单很多时,打开时它们会层叠。

当一个按钮被按下时,一些代码运行并且表单关闭

this.Visible = false; 杀死僵尸(); this.Close();

My Kill.Zombies();方法需要几秒钟才能运行,所以我在运行之前使表单不可见。我遇到的问题是,即使它不可见,它后面的表单也不会刷新,就好像应该不可见的表单仍然可见。

我尝试在使其不可见之前移动表单,但它仍然存在显示在其后面的表单之上的问题。

如果您能给我一些关于如何解决此问题的建议,我将不胜感激。

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    在 this.Visible = false; 之后是否调用 Application.DoEvents() ?

    执行此操作的正确方法是多线程,但调用 DoEvents() 可能会修复它。

    【讨论】:

    • 为什么不添加一些显示正确方式的代码(使用ThreadPoolBackgroundWorker)?
    • @Daniel:因为这不是问题所在。问题是如何修复显示错误,我回答了。
    • 我认为您的解决方案在大多数情况下都可以正常工作,但也有可能无法正常工作。就像它会使表单不可见 100 次但不是 101 次。正如@Daniel 所说,正确的方法是使用线程。
    【解决方案2】:
    this.Visible = false; 
    MethodInvoker mk = delegate {
    Kill.Zombies(); this.Close();
    };
    mk.BeginInvoke(null,null);
    

    使用上面的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 1970-01-01
      • 2011-01-05
      • 2011-08-04
      • 2011-01-12
      • 1970-01-01
      相关资源
      最近更新 更多