gpt4 book ai didi

c# - WinForm 控件事件处理程序顺序

转载 作者:行者123 更新时间:2023-11-30 20:26:37 24 4
gpt4 key购买 nike

我想知道哪个会先调用:

  • 标准事件处理程序订阅者方法,如 void TextBox_MouseClick(object sender, MouseEventArgs e)
  • 控件的 native 处理程序又名 base.OnMouseClick(e),已在控件的源代码中声明;

我想覆盖标准控件的操作,但我不确定何时调用基本方法 base.OnMouseClick(e),是在我的代码之后还是之前。

有人可以帮助阐明控件的事件处理程序顺序以做出正确的决定吗?

最佳答案

Control.OnMouseClick调用事件处理程序。实际上,正如您从文档中看到的那样,它没有执行任何其他操作:

Raises the MouseClick event.

因此,您应该能够以相对直接的方式控制执行顺序:

protected override void OnMouseClick(MouseEventArgs e)
{
Console.WriteLine("Before handlers");
base.OnMouseClick(e);
Console.WriteLine("After handlers");
}

void TextBox_MouseClick(object sender, EventArgs e)
{
Console.WriteLine("Handler");
}

如果您的父控件之一违反了 OnMouseDown 的约定(例如,在不调用基本方法的情况下覆盖它),这可能不起作用。

关于c# - WinForm 控件事件处理程序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49626419/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com