Vb.net 如何";“提示”;VB中用于用户输入的子窗体?

Vb.net 如何";“提示”;VB中用于用户输入的子窗体?,vb.net,forms,prompt,subform,Vb.net,Forms,Prompt,Subform,以下是我希望在项目中实现的目标: 当用户按下按钮时,会弹出一个表单,表单上有文本框、单选按钮和选择菜单,允许用户输入他们的通知 单击OK,表单数据将传递到主程序表单中的某个文本框 单击“取消”,子窗体将消失 这在VB中是可能的吗 我尝试了提示和输入框,但有限制 我是VB新手,如果我没有把问题说清楚,我很抱歉,我使用了这个示例并稍微整理了一下代码: 我不知道如何实现您的单选按钮和选择菜单,但您可能可以找到它,因为最困难的部分是将弹出表单中的文本传递回调用表单,这在这里为您完成。如果你需要帮助,请

以下是我希望在项目中实现的目标:

当用户按下按钮时,会弹出一个表单,表单上有文本框、单选按钮和选择菜单,允许用户输入他们的通知

单击OK,表单数据将传递到主程序表单中的某个文本框 单击“取消”,子窗体将消失

这在VB中是可能的吗

我尝试了提示和输入框,但有限制


我是VB新手,如果我没有把问题说清楚,我很抱歉,我使用了这个示例并稍微整理了一下代码:

我不知道如何实现您的单选按钮和选择菜单,但您可能可以找到它,因为最困难的部分是将弹出表单中的文本传递回调用表单,这在这里为您完成。如果你需要帮助,请告诉我。也许你可以提供一个UI的屏幕截图

因此,在您的呼叫表单中,单击按钮以显示提示:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim result = frmPrompt.Show("The Title", "The Prompt", "Default", TextBox1.Text, False)
End Sub
这是粘贴到自定义提示表单中的代码:

Imports System.Windows.Forms

Public Class frmPrompt

Protected m_BlankValid As Boolean = True
Protected m_ReturnText As String = ""

Public Overloads Function ShowDialog( _
  ByVal TitleText As String, _
  ByVal PromptText As String, _
  ByVal DefaultText As String, _
  ByRef EnteredText As String, _
  ByVal BlankValid As Boolean) As System.Windows.Forms.DialogResult
    m_BlankValid = BlankValid
    Me.Lbl_Prompt.Text = PromptText
    Me.Text = TitleText
    Me.Txt_TextEntry.Text = DefaultText
    Me.ShowDialog()
    EnteredText = m_ReturnText
    Return Me.DialogResult
End Function

Public Overloads Shared Function Show(ByVal TitleText As String, ByVal promptText As String, ByVal DefaultText As String, ByRef TextInputted As String, Optional ByVal IsEmptyValid As Boolean = True) As System.Windows.Forms.DialogResult
    Dim tmp As New frmPrompt
    Return tmp.ShowDialog(TitleText, promptText, DefaultText, TextInputted, IsEmptyValid)
End Function

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_TextEntry.TextChanged
    If Me.Txt_TextEntry.Text = "" Then
        Me.But_Ok.Enabled = m_BlankValid
    Else
        Me.But_Ok.Enabled = True
    End If
End Sub

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Ok.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    m_ReturnText = Me.Txt_TextEntry.Text
    Me.Close()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Cancel.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    m_ReturnText = ""
    Me.Close()
End Sub
End Class

我使用了这个示例,并稍微清理了代码:

我不知道如何实现您的单选按钮和选择菜单,但您可能可以找到它,因为最困难的部分是将弹出表单中的文本传递回调用表单,这在这里为您完成。如果你需要帮助,请告诉我。也许你可以提供一个UI的屏幕截图

因此,在您的呼叫表单中,单击按钮以显示提示:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim result = frmPrompt.Show("The Title", "The Prompt", "Default", TextBox1.Text, False)
End Sub
这是粘贴到自定义提示表单中的代码:

Imports System.Windows.Forms

Public Class frmPrompt

Protected m_BlankValid As Boolean = True
Protected m_ReturnText As String = ""

Public Overloads Function ShowDialog( _
  ByVal TitleText As String, _
  ByVal PromptText As String, _
  ByVal DefaultText As String, _
  ByRef EnteredText As String, _
  ByVal BlankValid As Boolean) As System.Windows.Forms.DialogResult
    m_BlankValid = BlankValid
    Me.Lbl_Prompt.Text = PromptText
    Me.Text = TitleText
    Me.Txt_TextEntry.Text = DefaultText
    Me.ShowDialog()
    EnteredText = m_ReturnText
    Return Me.DialogResult
End Function

Public Overloads Shared Function Show(ByVal TitleText As String, ByVal promptText As String, ByVal DefaultText As String, ByRef TextInputted As String, Optional ByVal IsEmptyValid As Boolean = True) As System.Windows.Forms.DialogResult
    Dim tmp As New frmPrompt
    Return tmp.ShowDialog(TitleText, promptText, DefaultText, TextInputted, IsEmptyValid)
End Function

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_TextEntry.TextChanged
    If Me.Txt_TextEntry.Text = "" Then
        Me.But_Ok.Enabled = m_BlankValid
    Else
        Me.But_Ok.Enabled = True
    End If
End Sub

Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Ok.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.OK
    m_ReturnText = Me.Txt_TextEntry.Text
    Me.Close()
End Sub

Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles But_Cancel.Click
    Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
    m_ReturnText = ""
    Me.Close()
End Sub
End Class

只需创建自己的表单,并使用
.ShowDialog()
将其显示为模态,如InputBox


然后,在控件中输入数据时,在关闭窗体之前,将数据传递到主窗体,使其不会丢失。

只需创建自己的窗体,并使用
.ShowDialog()
将其显示为模式,如InputBox


然后,在控件中输入数据时,在关闭窗体之前,将数据传递到主窗体,使其不会丢失。

更简单的方法是声明要使用的窗体变量,然后调用showdialog。现在您可以访问表单上的所有控件属性。因为您使用的是form2的对象,所以关闭表单不会处理该对象,因此所有内容都可用

    Dim NewForm2 As New Form2
    Dim Result As DialogResult = NewForm2.ShowDialog
    If Result = Windows.Forms.DialogResult.OK Then
        MsgBox(Newform2.TextBox1.Text)
    End If
在表格2中添加以下内容:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Me.DialogResult = Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

一种更简单的方法是声明将使用的形式的变量,然后调用showdialog。现在您可以访问表单上的所有控件属性。因为您使用的是form2的对象,所以关闭表单不会处理该对象,因此所有内容都可用

    Dim NewForm2 As New Form2
    Dim Result As DialogResult = NewForm2.ShowDialog
    If Result = Windows.Forms.DialogResult.OK Then
        MsgBox(Newform2.TextBox1.Text)
    End If
在表格2中添加以下内容:

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Me.DialogResult = Windows.Forms.DialogResult.OK
    Me.Close()
End Sub

你没有展示你所拥有的。。但是有有限的…你没有展示你所拥有的。。但这是有限的。。