ShowDialog Form属性为空

时间:2015-08-07 01:18:24

标签: wpf vb.net

我有两个最简单的形式,有几个按钮和一个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属性。

enter image description here

1 个答案:

答案 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