VB.NET如何在自定义子过程中获取事件发送方Sender名称
问题原因
sender是按钮点击事件处理方法的局部参数,作用域仅限Button2_Click方法内部,你定义的独立子过程Hello30没有声明对应的形参来接收这个值,自然无法直接访问。
修复方案
给Hello30方法添加接收事件源的形参,在调用方法时把事件里的sender作为实参传入即可。另外注意你代码里Replace的匹配字符串写错了:按钮控件的名称前缀是Button,不是Hello,如果要按照Button1的逻辑提取名称里的数字,需要替换正确的前缀。如果确实需要点击后弹出“30”,把对应按钮的Name属性设为Button30就能直接得到结果。
修复后的可运行代码:
Private Sub Button2_Click(sender As Object, e As RoutedEventArgs) Handles Button2.Click ' 调用公共方法时传入事件源sender Hello30(sender) End Sub ' 为方法添加sender形参,接收传入的事件触发对象 Sub Hello30(sender As Object) ' 将sender强转为Button类型,提取名称中的数字部分弹窗 MsgBox(CType(sender, Button).Name.Replace("Button", "")) End Sub
内容的提问来源于stack exchange,提问作者Markowitz
相关产品推荐
相关产品推荐

