当前位置:  开发笔记 > 后端 > 正文

在VB.net中将值从child传递给mdi parent

如何解决《在VB.net中将值从child传递给mdiparent》经验,为你挑选了1个好方法。

我有一本简单的联系簿.该应用程序有一个主窗口,它是一个mdi形式.当使用"添加联系人"表单添加联系人时,我想在父窗口状态栏中显示一条简单的反馈消息,说明联系人已成功添加.

这是孩子装:

Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click
    Dim af As New addForm
    af.MdiParent = Me
    af.Show()
End Sub

问题是,由于父实际上是一个mdi父代,并且启动了"添加联系人"表单.Show()而不是.ShowDialog(),我无法存储启动Sub执行操作时可以使用的任何返回值.

有没有办法将这个孩子的值传递给mdi父级?这是儿童形式做的事情:

Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click

    Dim contact = 
                      <%= quickNameTextBox.Text %>
                      <%= firstNameTextBox.Text %>
                      <%= lastNameTextBox.Text %>
                      <%= emailTextBox.Text %>
                      <%= websiteTextBox.Text %>
                      <%= telephoneTextBox.Text %>
                      <%= mobileTextBox.Text %>
                  

    Dim contactList = XDocument.Load("contactList.xml")

    contactList.Elements()(0).Add(contact)
    contactList.Save("contactList.xml")
    //something here to trigger the status update in the parent?
    //trivia: SO doesn't support VB single-quote comments...
    Me.Close()

End Sub

PS显然,我很擅长标记事物......所以任何想要重新提出这个问题的人都是最受欢迎的.



1> jgallant..:

我处理这个的方法是在子控件上创建一个自定义事件.然后在父控件上处理事件.

首先,在子控件中定义事件(例如,定义自己的事件):

Public Event EVENTNAME(ByVal sender as Object, ByVal ValueToReturn As String)

然后,在准备好传递数据时,在子控件上引发事件.

RaiseEvent EVENTNAME(Me, txtBoxWithReturnValue.Text)

完成后,现在在父窗体上,您可以处理自定义事件.要做到这一点,你需要添加一个监听器,以便在它触发时"监听"事件:

AddHandler CONTROLNAME.EVENTNAME, AddressOf EVENTNAME

然后,您可以编写一个例程来处理父表单中的这个新事件:

Private Sub FUNCTIONAME(ByVal sender As System.Object, ByVal ValueToReturn as String) Handles CONTROLNAME.EVENTNAME

'Code to handle data here

End Sub

推荐阅读
coco2冰冰
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有