c# - 窗口失去焦点后更新 ToolstripDropdownButton 时出现问题

标签 c# winforms focus toolstrip toolstripdropdown

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

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

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

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

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

  1. 将 ToolStip 的 RenderMode 设置为 ManagerRenderMode。
  2. 将其“自动调整大小”设置为 false,并将其调大一点。

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

关于如何将其重置为默认状态有什么想法吗?

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

最佳答案

消息框或模态表单会干扰这一点。下拉菜单需要子菜单项。

示例解决方法:

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

关于c# - 窗口失去焦点后更新 ToolstripDropdownButton 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15162152/

相关文章:

javascript - 确定焦点事件 : click or tabstop

c# - 如何扩展具有 50000 个同时任务的应用程序

javascript - 如何使 $(this) 选择器聚焦于当前元素?

JavaFX 相对于 Swing setFocusable(true/false)?

vb.net - Windows Form VB.Net-附加用于部署的空目录

c# - IProgress<T> 不会在当前上下文中触发事件

c# - 如何使用长处理步骤将事件添加到 C# Windows 应用程序

c# - 使用构造函数类复制现有类实例

c# - 数据库中的选项而不是 O 或 null

c# - 检查数据库中的字符串以查看它是否包含数组中的项目