不要关闭子项“选中”上的“工具条下拉按钮”
本文关键字:上的 工具 按钮 选中 | 更新日期: 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
外部或失去焦点时阻止它关闭。