动态 增加/删除 控件的关联事件

在项目中经常遇到在代码运行时动态 增加 / 删除 控件的事件.
C#:

  1. 控件代码部分
    Button btnSave = new Button();
    btnSave.Name = “btnSave”;
    btnSave.Text = “Save”;
    // 增加 Click事件
    btnSave.Click += new EventHandler(btnSave_Click);
    //删除事件
    //btnSave.Click -= new EventHandler(btnSave_Click);

  2. 事件代码部分

private void btnSave_Click(object sender, EventArgs e)
{
//…要执行的代码
}

//如果是简单的事件代码,例如只有几行,也可以用lamb更加简洁
例如:
private void InitWiList(string[] arrWiNo)
{
foreach (var item in arrWiNo)
{
RadioButton rd = new RadioButton();
rd.Text = item;
// rd.Click += new EventHandler(btnRefresh_Click);
//以下事件使用lamb
rd.Click += (obj, e) =>
{
MessageBox.Show((obj as RadioButton).Text);
};
this.Controls.Add(rd);
}
}

VB:
.增加事件
AddHandler CType(btnSave, Button).Click, AddressOf Me.btnSave_Click
.删除事件
RemoveHandler CType(btnSave, Button).Click, AddressOf Me.btnSave_Click

'关联一个function
AddHandler btnUpload.Click, Function()
'关联一个sub
AddHandler btnUpload.Click, AddressOf btnUpload_Click

'Function
Private Function Upload_Date(ByVal cmd As String)
Return “Uploaded.”
End Function
'Sub
Private Async Sub btnUpload_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpload.Click
MsgBox(“Upload_Date!”)
End Sub

微软DOCS 上的例子

Sub TestEvents()
Dim Obj As New Class1
’ Associate an event handler with an event.
AddHandler Obj.Ev_Event, AddressOf EventHandler
’ Call the method to raise the event.
Obj.CauseSomeEvent()
’ Stop handling events.
RemoveHandler Obj.Ev_Event, AddressOf EventHandler
’ This event will not be handled.
Obj.CauseSomeEvent()
End Sub

Sub EventHandler()
’ Handle the event.
MsgBox(“EventHandler caught event.”)
End Sub

Public Class Class1
’ Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
’ Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值