我有一个 ToolStripDropDownButton
,其中的子项启用了 CheckOnClick
。
我想让用户能够在关闭下拉列表之前选择多个项目,但如果不将 AutoClose
设置为 false<,我找不到一种方法来做到这一点
这样做会带来另一个问题,即当用户在控件外的任何地方单击时如何关闭它(这是它应该关闭它的时间)。
我看过类似的问题How do I close a toolstripmenuitem that is set to autoclose = false?但是在每个组件上为 Click
事件放置一个处理程序的建议并不完全是我所追求的。应该是在失去焦点的时候,不管是通过鼠标还是键盘控制。
我查看了 Leave
,但虽然 ToolStrip 本身有该事件,但显然 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
之外或它失去焦点时阻止它关闭。
关于c# - 不要在选中的子项上关闭 ToolStripDropDownButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962371/