我有两个最简单的形式,有几个按钮和一个TextBox。我单击使用ShowDialog()打开第二个表单(frmModal),在txtGreeting中键入一些文本,然后按是按钮。应该发生的是MessageBox出现确认输入到txtGreeting的文本,但它是空的。
我知道Form的属性应该可以访问,直到表单超出范围,但它们会立即消失。我甚至无法阅读dialog.txtGreeting.Text。
我错过了什么明显的吗?
Public Class frmMain
Private Sub btnModal_Click(sender As Object, e As EventArgs) Handles btnModal.Click
Dim dialog As frmModal
dialog = New frmModal()
Dim result As DialogResult = frmModal.ShowDialog(Me)
If result = Windows.Forms.DialogResult.Yes Then
MessageBox.Show(dialog.Greeting)
End If
'dialog.Dispose()
End Sub
End Class
Public Class frmModal
Public Property Greeting As String
Get
Return txtGreeting.Text
End Get
Set(value As String)
End Set
End Property
Private Sub btnYes_Click(sender As Object, e As EventArgs) Handles btnYes.Click
MessageBox.Show(Greeting)
End Sub
End Class
“是”按钮将其DialogResult属性设置为“是”。
我尝试将对话框声明移出click-event,使用(不必要的)Dispose(),故意在Yes-click事件中分配Greeting属性。
答案 0 :(得分:0)
您有效地将表单实例化两次。通过使用ShowDialog显示frmModal,然后在您创建的实例上询问Greeting值,命名为' dialog'。
这应该解决它。
Private Sub ModalTestButton_Click(sender As System.Object, e As System.EventArgs) Handles ModalTestButton.Click
Dim dialog As frmModal
dialog = New frmModal()
Dim result As DialogResult = dialog.ShowDialog(Me)
If result = Windows.Forms.DialogResult.Yes Then
MessageBox.Show(dialog.Greeting)
End If
End Sub