【问题标题】:ToolStripButton "Reset Appearance" / "Fire Leave Event"ToolStripButton“重置外观”/“火灾离开事件”
【发布时间】:2011-07-20 23:50:22
【问题描述】:

我有一个执行操作的 ToolStripButton。用户单击该按钮,该按钮被禁用以防止该操作被执行两次。操作完成后,按钮将重新启用。这一切都很完美......除了:

由于按钮被禁用,它不会触发“MouseLeave”事件,因此按钮的外观不会更新。绝对清楚,当鼠标进入 ToolStripButton 时,按钮以橙色突出显示(默认情况下),周围有一个黑框。当我重新启用该按钮时,此突出显示不会被删除。此时,鼠标光标早已远离控件。将鼠标悬停在按钮上自然会通过重绘按钮来修复它。

我想做的是在 ToolStripButton 上“重置”其外观的一些方法。这样的方法甚至可能存在于 ToolStrip 上,但尽管搜索我一直找不到这样的东西。

作为替代方案,我可以直接在按钮上触发“鼠标离开”事件。据我所知,在 C# .NET 中无法轻松做到这一点。

此时任何建议都将不胜感激,我自然不想撕毁我的应用程序并更换工具条。

【问题讨论】:

  • “动作”到底是什么?它会冻结用户界面吗?你真的看到按钮变灰了吗?

标签: c# .net toolstrip


【解决方案1】:

更新: 我重现了你的问题,试图弄清楚!

除了在点击事件中重置样式之外我没有找到更好的方法

    private void toolStripButton1_Click(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.FromKnownColor(KnownColor.Control);
        toolStripButton1.Enabled = false;
    }

    private void toolStripButton1_MouseEnter(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.Red;
    }

    private void toolStripButton1_MouseLeave(object sender, EventArgs e)
    {
        toolStripButton1.BackColor = Color.FromKnownColor(KnownColor.Control);
    }

希望这会有所帮助!


你试过 Control.Invalidate() 吗?

来自 MSDN:使控件的整个表面无效并导致控件被重绘。

【讨论】:

  • 我确实尝试过 Control.Invalidate() 但重绘只是重绘,控件只是在“鼠标悬停”状态下重绘。
【解决方案2】:

我遇到了同样的问题。我通过隐藏,然后在任务完成后使用 Visible 属性显示 ToolStripButton 来“修复”它。

【讨论】:

    【解决方案3】:

    在禁用 ToolStrip 或 ToolStripItem 之前:

    private void RemoveHighlightFromToolStrip(ToolStrip toolStrip)
            {
                foreach (ToolStripItem item in toolStrip.Items)
                {
                    if (item.Pressed || item.Selected)
                    {
                        item.Visible = false;
                        item.Visible = true;
                    }
                }
            }
    

    您也可以隐藏和显示整个 ToolStrip,但这可能会影响表单中的其他控件(即,如果您有一些停靠的 DataGridView,它将被重绘)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多