【问题标题】:MouseEventArgs NotHandled equivalent?MouseEventArgs NotHandled 等效?
【发布时间】:2018-02-25 08:49:34
【问题描述】:

对于我对使用正确术语的目的不够了解,我深表歉意,但这是我的情况。我有一个 Forms 应用程序并实现了一个 MouseDown 处理程序,如下面的伪代码所示。在这段代码中,如果某个条件为真,我想做一些自定义的事情,但如果不是真的,我希望发生默认的 MouseDown 行为,就好像根本没有自定义处理程序一样。默认情况下,我的意思是当鼠标指针位于表单的标题栏中时按下并按住鼠标左键,或者如果没有自定义处理程序可能发生的任何其他事情,则能够在桌面上拖动焦点表单。也许我假设在拖动整个表单时甚至涉及一些默认的 MouseDown 事件,但我知道如果我自己实现 MouseDown 事件,我目前无法做到这一点。

  private void treeView1_MouseDown(object sender, MouseEventArgs e)
  {
     if (...some testable condition is true...)
     {
        ...do something...
     }
     else
     {
        ...forward the MouseDown event to the default MouseDown handler...
     }
  }

【问题讨论】:

    标签: c# event-handling mousedown


    【解决方案1】:

    不确定您的可测试条件是什么,但您可能正在寻找一个自定义控件,您可以在其中覆盖特定的事件行为。 here 的一个例子。下面再举一个例子:

    public class CustomControl : SomeBaseControl
    {
        protected override void OnMouseDown(MouseEventArgs mevent)
        {
            if (your_condition_passes)
            {
                // Do your logic
                return; // Prevent the base control event from firing
            }
            base.OnMouseDown(mevent); // Allow the base control event to fire
        }
    
    }
    

    您可以选择将上面的 your_condition_passes 占位符替换为可以直接从设计器或通过代码设置的布尔属性。

    【讨论】:

    • 是的,简单明了。正是我想要的。谢谢。
    猜你喜欢
    • 2013-08-20
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2017-06-02
    • 1970-01-01
    • 2010-11-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多