不要在子项目上关闭ToolStripDropDownButton Checked

时间:2016-01-23 10:34:37

标签: c# .net winforms toolstripdropdown

我有一个ToolStripDropDownButton,子项目已启用CheckOnClick

我想让用户在关闭下拉菜单之前选择多个项目,但是如果不将AutoClose设置为false并且这样做,我就找不到这样做的方法提出了另一个问题,即当用户点击控件外的任何地方时(当它应该关闭它时),如何关闭它。

我已经看到类似的问题How do I close a toolstripmenuitem that is set to autoclose = false?但是在每个组件上放置Click事件的处理程序的建议并不完全是我所追求的。无论是通过鼠标还是键盘控制,都应该失去焦点。

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

最好的方法是什么?

1 个答案:

答案 0 :(得分:5)

事实证明,这是一个非常简单的方法,我还没有意识到这一点。 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之外或者它失去焦点,则不会阻止它关闭。< / p>