我一直在寻找一种方法来从一个从mdi子句调用的打开表单传递一个文本框值,然后再回到调用的mdi子表单。
我研究了很多方法,我自己无法解决这个问题。大多数答案涉及在两种形式之间传递,从mdi父级传递给mdi子级,或者传递给两个mdi子级。
我的应用程序需要将表单中的文本框值传递给mdi子级。这是我尝试过的代码示例之一;
frmCalendar.txtSun1.Text = Me.txtInsert.Text
这个表格是从mdi孩子专门调用到mdi孩子的文本框中的输入约会。
这是我从frmCalendar打开表单的方式:
Private Sub txtSun1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSun1.DoubleClick
Dim cInput As New frmInput
cInput.WindowState = FormStartPosition.CenterScreen
cInput.WindowState = FormWindowState.Normal
cInput.Visible = True
cInput.lblTextRecieve.Text = Me.txtSun1.Text
cInput.txtInsert.Text = Me.txtSun1.Text
cInput.lblDate.Text = Me.gbMonthName.Text & " " & su1.Text & ", " & Format(Now, "yyyy")
cInput.lblSource.Text = "txtSun1"
cInput.Focus()
cInput.Show()
End Sub
当frmInput关闭时,这是我需要工作的行:
frmCalendar.txtSun1.Text = Me.txtInsert.Text
txtInsert是frmInput表单上唯一的文本框。
帮助!
答案 0 :(得分:0)
只要文本框修饰符保持默认值(Friend
),就可以创建您要作为新对象(Dim newcalendar As New frmCalendar()
)调用的表单。因此,即使在关闭后,您也可以作为表单(txtInsert.Text = newcalendar.txtSun1.Text
)的属性访问文本框。
答案 1 :(得分:0)
创建InputForm时,为其FormClosing事件添加处理程序。这样,您就可以在表单关闭时提取所需的数据。
像这样。
Private Sub txtSun1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtSun1.DoubleClick
Dim cInput As New frmInput
AddHandler frmInput.FormClosing, AddressOf InputFormClosing 'Note change adding the handler to the closing event
cInput.WindowState = FormStartPosition.CenterScreen
cInput.WindowState = FormWindowState.Normal
cInput.Visible = True
cInput.lblTextRecieve.Text = Me.txtSun1.Text
cInput.txtInsert.Text = Me.txtSun1.Text
cInput.lblDate.Text = Me.gbMonthName.Text & " " & su1.Text & ", " & Format(Now, "yyyy")
cInput.lblSource.Text = "txtSun1"
cInput.Focus()
cInput.Show()
End Sub
'EventHandler to get information from the closing form
Private Sub InputFormClosing(sender As Object, e As FormClosingEventArgs)
txtSun1.Text = DirectCast(sender, Form3).txtInsert.Text
End Sub