ToolStripSplitButton行为覆盖

4

我试图理解如何覆盖System.Windows.Forms中的ToolStripDropDown控件的行为,如果您使用以下构造函数:

 var button = new ToolStripSplitButton("text","path to image", clickEventHandler)

如果我一直按住鼠标并使用另一个功能,那么下拉菜单才会显示出来。

var button = new ToolStripSplitButton("text","path to image")

当我点击时,下拉菜单会出现。

很明显,提供一个点击事件处理程序非常明确地表示“嘿,当我点击时,执行这个”,但在ToolStripSplitButton的情况下,由于控件本身的分离性质,区别有点模糊。

所以,我想做的是: a)当用户点击ToolStripSplitButton的按钮部分时,点击事件处理程序像平常一样执行 b)当我点击或按鼠标箭头部分时,下拉菜单显示

是否有任何OOB属性/方法来实现这一点?

谢谢


很难理解你的意思。ToolStripSplitButton已经按照你想要的方式运作了。听起来你是在混淆ToolStripDrownDownButton的行为。你需要单独为下拉菜单中的项目分配事件处理程序。 - Hans Passant
@Hans:我最初也发表了同样的评论,但看起来如果在构造函数中分配单击事件处理程序,它确实会改变ToolStripSplitButton的行为。即使您单击下拉箭头,也会触发单击事件处理程序。 - Cody Gray
1个回答

12

ToolStripSplitButton有两个点击处理程序。一个称为“Click”,另一个称为“ButtonClick”。构造函数中的“Click”处理程序不管在控件的哪个位置单击都会触发。而“ButtonClick”处理程序仅在单击按钮本身而非箭头时才触发。

请尝试:

var button = new ToolStripSplitButton("text","path to image");
button.ButtonClick += clickEventHandler;

是的,情况正是如此。我简直不敢相信我必须自己调试才能弄清楚问题所在。+1 - Cody Gray

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接