我有一个包含2个表单的Windows应用程序。
frmMain上有一个打开frmEditAgent的按钮(btnEditAgent):
Public Sub btnEditAgent_Click(sender As Object, e As EventArgs) Handles btnEditAgent.Click
frmAgentEdit.ShowDialog()
End Sub
然后在frmEditAgent上加载:
Private Sub frmAgentEdit_Load(ByVal sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox(sender.Name, vbOKOnly, "verify")
End Sub
发件人回复为" frmEditAgent"而不是" btnEditAgent"
我不明白为什么会这样。为了让我的其余代码能够工作,我需要知道哪个按钮打开了frmEditAgent。为什么发件人指的是相同的表格?
答案 0 :(得分:1)
Load
事件的发件人是刚刚加载的Form
。 sender
的语义在其他方面没有意义。
按照这种方式思考:按钮打开表单,但表单会自行加载,因此调用自己的Load
事件并将自身作为发件人。
如果您想知道哪个按钮打开了表单,那么您可以在对话框表单的类中添加一个实例变量,然后在btnEditAgent_Click
中设置该变量。
frmAgentEdit
可以使用该实例变量来知道哪个按钮导致它被打开。