【问题标题】:Visual Basic sender not coming back as controlVisual Basic 发件人不作为控制返回
【发布时间】:2014-08-15 20:29:27
【问题描述】:

我有一个包含 2 个表单的 Windows 应用程序。

frmMain 上有一个按钮 (btnEditAgent) 可以打开 frmEditAgent:

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。为什么发件人指的是同一个表单?

【问题讨论】:

    标签: winforms visual-studio basic sender


    【解决方案1】:

    Load 事件的发送者是刚刚加载的Form。否则sender 的语义将毫无意义。

    这样想:按钮打开表单,但表单自己加载,因此调用自己的Load 事件,将自己作为发送者。

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

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

    【讨论】:

    • 好的,现在我明白了。谢谢你。现在我必须想出一个新的方法来编写这个程序。
    • 那是我的下一个计划。再次感谢您。
    • @Katp00p 好吧,如果这回答了您的问题,那么您最好将其标记为答案。 :)
    • 抱歉,有一百万件事情正在发生。
    猜你喜欢
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多