Visual Basic发件人不会作为控件返回

时间:2014-08-15 20:29:27

标签: winforms visual-studio basic sender

我有一个包含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。为什么发件人指的是相同的表格?

1 个答案:

答案 0 :(得分:1)

Load事件的发件人是刚刚加载的Formsender的语义在其他方面没有意义。

按照这种方式思考:按钮打开表单,但表单会自行加载,因此调用自己的Load事件并将自身作为发件人。

如果您想知道哪个按钮打开了表单,那么您可以在对话框表单的类中添加一个实例变量,然后在btnEditAgent_Click中设置该变量。

然后

frmAgentEdit可以使用该实例变量来知道哪个按钮导致它被打开。