将号码传递到事件中

Pass number into event

提问人:Jiří Touška 提问时间:8/22/2023 最后编辑:Rand RandomJiří Touška 更新时间:8/22/2023 访问量:29

问:

我想请你帮忙。 我动态创建了很多文本框,并且正在使用 LostFocus 事件 (C#)。

是否可以创建传递文本框数字 ID 的事件?

类似的东西

(object sender,EventArgs,int ID)

tbx.LostFocus+= EventHandler(MySubFunction(3)?? --3 is my ID of textbox

谢谢你的帮助,我迷失在其中 我不知道如何添加任何号码来呼叫EventHandler

C# 事件处理 传递 可选参数

评论

0赞 Roe 8/22/2023
您应该包含一些您尝试执行的操作的代码片段。目前尚不完全清楚您要实现的目标
1赞 Rand Random 8/22/2023
使用您的 EG 的属性。在事件端创建TagTextBoxestextBox.Tag = "Hello World";(sender as TextBox).Tag
1赞 DavidG 8/22/2023
@RandRandom 次要投诉,但如果对象不是 TextBox,则该代码将抛出 null ref 异常:)
0赞 Rand Random 8/22/2023
@DavidG - 确实会,但我们希望保持 stackoverflow 的活力,所以这将是另一天的问题:D

答:

1赞 JonasH 8/22/2023 #1

如果使用 winforms,则可以使用该属性来区分不同的控件:Tag

var textbox = new TextBox();
textbox.Tag = 42;
textbox.LostFocus += TextboxLostFocus;

...
void TextboxLostFocus(object sender, EventArgs e){
   if(sender is TextBox txtBox && txtBox.Tag is int textboxNum){
      // use textboxNum
   }
}

或者,您可以使用 lambda 使用内置号码注册您的活动:

var textbox = new TextBox();
textbox.LostFocus += (o, e) => TextboxLostFocus(42);

...
void TextboxLostFocus(int textboxNum){
      // use textboxNum
}

评论

0赞 Jiří Touška 8/22/2023
非常感谢,这比我尝试创建的方法要简单得多。