不要在子项目上关闭ToolStripDropDownButton Checked

Joh*_*ntu 3 .net c# winforms toolstripdropdown

我有一个ToolStripDropDownButton子项CheckOnClick启用的地方.

我想给用户关闭下拉前挑选多个项目的能力,但我找不到这样做没有设置的方式AutoClosefalse和这样做了另外一个问题,这是怎么关闭它,当用户单击控件外的任何位置(即应该关闭它的时间).

我已经看到类似的问题如何关闭设置为autoclose = false的toolstripmenuitem?但是Click在每个组件上放置事件处理程序的建议并不完全是我所追求的.无论是通过鼠标还是键盘控制,都应该失去焦点.

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

最好的方法是什么?

Joh*_*ntu 6

事实证明,这是一种非常简单的方法,我还没有意识到这一点.该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;
    }
}
Run Code Online (Sandbox Code Playgroud)

这样我只会在单击某个项目时阻止它被关闭,但是如果用户点击该项目之外ToolStripDropDownButton或者如果它失去焦点,则不会阻止它关闭.