不要关闭子项“选中”上的“工具条下拉按钮”

本文关键字:上的 工具 按钮 选中 | 更新日期: 2023-09-27 18:31:37

我有一个ToolStripDropDownButton子项已启用CheckOnClick

我想让用户能够在关闭下拉列表之前选择多个项目,但是如果不将AutoClose设置为 false,我就找不到一种方法来做到这一点,这样做会带来另一个问题,即当用户单击控件外的任意位置时如何关闭它(这是它应该关闭它的时间)。

我见过类似的问题 如何关闭设置为自动关闭 = false 的工具tripmenuitem? 但是在每个组件上放置Click事件处理程序的建议并不完全是我所追求的。它应该是当它失去焦点时,无论是通过鼠标还是键盘控制。

我查看了Leave但是虽然ToolStrips本身有该事件,但显然ToolStripDropDownButton没有。

最好的

方法是什么?

不要关闭子项“选中”上的“工具条下拉按钮”

事实证明,有一种

非常简单的方法可以做到这一点,但我还没有意识到。Closing事件说明关闭ToolStripDropDownButton的原因,可用原因之一是单击了某个项目。

ToolStripDropDownButton直接没有Closing事件,但由于它只是一个ToolStripDropDown的包装器,它确实通过ToolStripDropDownButton.DropDown.Closing公开了它

所以我只是做了以下事情:

toolStripDropDownButton1.DropDown.Closing += toolStripDropDownButton1_Closing;
private void toolStripDropDownButton1_Closing(object sender, ToolStripDropDownClosingEventArgs e)
{
    if (e.CloseReason == ToolStripDropDownCloseReason.ItemClicked)
    {
        e.Cancel = true;
    }
}

这样,我只会在单击项目时阻止它关闭,而不是在用户单击ToolStripDropDownButton外部或失去焦点时阻止它关闭。