【问题标题】:Troubles with updating ToolstripDropdownButton after window loses focus窗口失去焦点后更新 ToolstripDropdownButton 的问题
【发布时间】:2013-03-01 16:20:06
【问题描述】:

让我从一个简单的例子开始重现我的问题:

  1. 创建 WinForms 项目。
  2. 在上面放一个 ToolStrip。
  3. 在其中创建一个 ToolstripDropdownButton(没有子级)。
  4. 为按钮添加一个点击事件处理程序,如下所示:

    MessageBox.Show("text", "Caption");
    

    (重点是让主窗体失去焦点)。

为了让问题更明显,让我们做一些不必要的补充:

  1. 将 ToolStip 的 RenderMode 设置为 ManagerRenderMode。
  2. 将其 Autosize 设置为 false 并将其放大一点。

这应该足以重现它。运行应用程序并单击按钮。你会得到弹出窗口。关闭弹出窗口,瞧……按钮现在看起来像是有人按住它。

关于如何将其重置为默认状态的任何想法?

我尝试将按钮 ResetBackColor、Refresh ... 也称为 ToolStrips。似乎不起作用。也许我错过了什么?

【问题讨论】:

  • 你在哪里添加你的事件处理程序?如果您正在处理 button_click 事件,那么它不应该以这种方式运行,但如果您正在处理类似 on button_down 的事件,您的主 GUI 可能会由于跨线程而停止运行,并失败。
  • 正如我所说的,它通常是“点击事件处理程序”。

标签: c# winforms focus toolstrip toolstripdropdown


【解决方案1】:

MessageBox 或模态表单会干扰它。下拉菜单需要子菜单项。

解决方法示例:

private void toolStripDropDownButton1_Click(object sender, EventArgs e) {
  this.BeginInvoke(new Action(() => MessageBox.Show("Help")));
}

【讨论】:

    猜你喜欢
    • 2012-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    相关资源
    最近更新 更多