如何在VB.net中将子窗体值传递给主窗体(MDI Parent)?

2026-05-06 10:321阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计677个文字,预计阅读时间需要3分钟。

如何在VB.net中将子窗体值传递给主窗体(MDI Parent)?

我有本简单的联系人簿。应用有一个主窗口,它是一个MDI形式。当使用添加联系人列表添加联系人时,我想在父窗口的状态栏中显示一条简单的反馈消息,说明联系人已成功添加。这是添加联系人按钮的功能。

我有一本简单的联系簿.该应用程序有一个主窗口,它是一个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父级?这是儿童形式做的事情:

如何在VB.net中将子窗体值传递给主窗体(MDI Parent)?

Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click Dim contact = <contact> <quickName><%= quickNameTextBox.Text %></quickName> <firstName><%= firstNameTextBox.Text %></firstName> <lastName><%= lastNameTextBox.Text %></lastName> <email><%= emailTextBox.Text %></email> <website><%= websiteTextBox.Text %></website> <telephone><%= telephoneTextBox.Text %></telephone> <mobile><%= mobileTextBox.Text %></mobile> </contact> 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

附:显然,我很擅长标记事物……所以任何想要重新提出这个问题的人都非常欢迎.

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

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

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

本文共计677个文字,预计阅读时间需要3分钟。

如何在VB.net中将子窗体值传递给主窗体(MDI Parent)?

我有本简单的联系人簿。应用有一个主窗口,它是一个MDI形式。当使用添加联系人列表添加联系人时,我想在父窗口的状态栏中显示一条简单的反馈消息,说明联系人已成功添加。这是添加联系人按钮的功能。

我有一本简单的联系簿.该应用程序有一个主窗口,它是一个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父级?这是儿童形式做的事情:

如何在VB.net中将子窗体值传递给主窗体(MDI Parent)?

Private Sub addButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles addButton.Click Dim contact = <contact> <quickName><%= quickNameTextBox.Text %></quickName> <firstName><%= firstNameTextBox.Text %></firstName> <lastName><%= lastNameTextBox.Text %></lastName> <email><%= emailTextBox.Text %></email> <website><%= websiteTextBox.Text %></website> <telephone><%= telephoneTextBox.Text %></telephone> <mobile><%= mobileTextBox.Text %></mobile> </contact> 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

附:显然,我很擅长标记事物……所以任何想要重新提出这个问题的人都非常欢迎.

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

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

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