我很抱歉因为不了解我想要做什么来使用正确的术语,但这是我的情况。我有一个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...
}
}
答案 0 :(得分:2)
不确定您的可测试条件是什么,但您可能正在寻找覆盖特定事件行为的自定义控件。这个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
占位符,该布尔属性可以直接从设计器或通过代码设置。