MouseEventArgs NotHandled 等效?

MouseEventArgs NotHandled equivalent?

很抱歉我对我想做的事情了解不够,无法使用正确的术语,但这是我的情况。我有一个 Forms 应用程序并实现了一个 MouseDown 处理程序,如下面的 pseudo-code 所示。在此代码中,如果某个条件为真,我想做一些自定义的事情,但如果不是,我希望默认的 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...
     }
  }

不确定您的可测试条件是什么,但您可能正在寻找一个自定义控件,您可以在其中覆盖特定的事件行为。这 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 占位符替换为布尔值 属性,后者可以直接从设计器中设置或通过代码设置。