【问题标题】:Windows form: Focus and Show doesnt work properlyWindows 窗体:Focus 和 Show 无法正常工作
【发布时间】:2011-07-07 20:48:31
【问题描述】:

我有一个带有许多控件和表单的多线程应用程序。我注册了一个事件,它将在要显示的表单上调用 Show Method。当事件第一次发生时,它会执行 Show 方法,但不会显示表单,但现在如果事件再次触发(第 2 次、第 3 次、...),则会显示表单。

我正在打一个简单的电话frm.Show()


第二个问题

在我的下一个应用程序中,同样的事情发生了,而不是第一次显示 Focus 不起作用。 我尝试了以下属性:

this.WindowState = FormWindowState.Normal;
this.Focus();
//this.BringToFront();
this.TopMost = true;

【问题讨论】:

  • 你调用 Form 的 Show() 并且你没有看到它已经很糟糕了。可能是因为你调用 Show() 而不是 ShowDialog() 它出现在你的主窗口后面,所以你只是看不到它?
  • 能否请您发布一些代码 sn-p 显示您对 Show 方法的调用?这个方法是在哪个线程调用的?
  • 请提供更多代码!仅凭这些sn-p就很难发表任何意见!

标签: c# winforms


【解决方案1】:

您是否从与创建表单的线程不同的线程调用 Show()?通常,Windows 窗体控件不是线程安全的,并且行为是不可预测的。如果必须的话,有几种方法可以做到这一点。我建议你阅读这篇关于如何进行线程安全调用的 MSDN 文章:How to: Make Thread-Safe Calls To Windows Forms Controls

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 1970-01-01
    • 2015-10-02
    • 2014-04-27
    相关资源
    最近更新 更多