我使用WinForms在C#中创建应用程序。C#如何使用基类中的EventArgs
我想要的:
我想要一个带有箭头的按钮。当按下带箭头的按钮部分时,它将显示一个下拉菜单,但如果按钮的其他部分被按下,则应该触发鼠标点击事件。
我需要什么帮助:
我相信我可以用鼠标位置做鼠标的位置检查,但我怎么能确保该按钮的情况下,事件处理程序只能有一个“鼠标按钮“事件时,它是按钮的主要部分被点击?即我如何在基础处理程序中吃掉事件,以便它永远不会到达派生的事件?
我有什么:
我的代码结构(简体)如下(从Windows.Forms button with drop-down menu拍摄):
// Button class:
public class ButtonWithDropDown : Button
{
protected override void OnClick(EventArgs e)
{
// Check for when the mouse is on the button and dispose of the
// event if it's over the 'arrow' part of the button.
}
}
// Event handler:
private void btnClickMe_Click(object sender, EventArgs e)
{
MouseEventArgs mevent = (MouseEventArgs)e;
if (mevent.Button == System.Windows.Forms.MouseButtons.Left)
MessageBox.Show("Only shown when clicking the main part of the button");
}
感谢。
有一个空的'override',其中不会调用'base'。 –
@David Pine在示例代码中就像? (我的实际代码确实调用了'base.OnClick(e)')不幸的是我试过删除它,它仍然通过事件。 – Edward
您是否试图避免使用任何侦听器的'.Click'事件,或者您是否试图阻止'override void OnClick'被完全调用? –