gpt4 book ai didi

c# - 如何在 C# 中手动调用事件?

转载 作者:太空狗 更新时间:2023-10-29 18:15:30 24 4
gpt4 key购买 nike

我有一个 USerControll,其中有一个文本框。我在我的表单中使用用户控件,当有人在文本框上按下回车键时,我想做一些事情。我该怎么做?如果你告诉我如何手动调用事件,我可以在 textbox.keydown 中调用 usercontrol.keydown。

最佳答案

首先,只能从声明事件的控件内的代码引发事件。因此,您的用户控件必须声明自定义事件 KeyDown 才能引发它。例如,您不能在用户控件包含的 TextBox 上引发 KeyDown。但是,您可以声明自己的 KeyDown,并将处理程序附加到 TextBox 的 KeyDown,这将引发您自己的 KeyDown。

鉴于此限制,引发事件很容易:

public delegate void MyEventHandler(object sender, MyEventArgs e)

public event MyEventHandler MyEvent;

public void RaisesMyEvent()
{
...

if(MyEvent != null) //required in C# to ensure a handler is attached
MyEvent(this, new MyEventArgs(/*any info you want handlers to have*/));
}

引发事件看起来很像一种方法,因为本质上这就是您正在做的事情;您正在调用一个或多个分配给事件幕后 MultiCast 委托(delegate)的方法委托(delegate)。将其视为将方法分配给普通的命名委托(delegate)(就像您从定义中省略了“事件”关键字一样)并从代码内部调用它。真实事件与真实事件之间的唯一区别是,一个事件可以附加多个处理程序委托(delegate),并在引发时调用所有这些委托(delegate)。

关于c# - 如何在 C# 中手动调用事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841178/

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