Vb.net 自定义输入框未记录响应

Vb.net 自定义输入框未记录响应,vb.net,visual-studio-2017,Vb.net,Visual Studio 2017,我已经使用frmInputBox.ShowDialog和两个标题为“确定”和“取消”的按钮创建了一个自定义输入框,将它们分别设置为AcceptButton和CancelButton。这只是为了让输入框与我的主表单的格式匹配。但是,当我在frmInputBox上的TextBox中输入一个值时,表单并没有消失,我的代码挂起,而输入框仍然打开 我使用一个定制的MessageBox测试了我的代码,使用所有相同的选项,它工作得非常好。输入框的问题一定与文本框记录不正确有关。但是我在文本框控件中看不到将其设

我已经使用
frmInputBox.ShowDialog
和两个标题为“确定”和“取消”的按钮创建了一个自定义
输入框,将它们分别设置为
AcceptButton
CancelButton
。这只是为了让
输入框
与我的主
表单
的格式匹配。但是,当我在
frmInputBox
上的
TextBox
中输入一个值时,表单并没有消失,我的代码挂起,而
输入框仍然打开

我使用一个定制的
MessageBox
测试了我的代码,使用所有相同的选项,它工作得非常好。
输入框
的问题一定与
文本框
记录不正确有关。但是我在
文本框
控件中看不到将其设置为
对话框
选项的任何选项

下面是我的
MessageBox
的示例代码:

frmMessageBox.lblMessageText.Text = "Would You Like To Clear The Event Log?"
frmMessageBox.ShowDialog()
If frmMessageBox.DialogResult = DialogResult.OK Then
    txtEventLog.Clear()
Else
    Exit Sub
End If
frmInputBox.lblDialogText.Text = "Enter Number of times this program should be executed:"
frmInputBox.ShowDialog()
If frmInputBox.DialogResult = DialogResult.OK Then
    ProgramCounter = frmInputBox.txtDialogInput.Text
Else
   Exit Sub
End If
下面是我的
输入框的示例代码:

frmMessageBox.lblMessageText.Text = "Would You Like To Clear The Event Log?"
frmMessageBox.ShowDialog()
If frmMessageBox.DialogResult = DialogResult.OK Then
    txtEventLog.Clear()
Else
    Exit Sub
End If
frmInputBox.lblDialogText.Text = "Enter Number of times this program should be executed:"
frmInputBox.ShowDialog()
If frmInputBox.DialogResult = DialogResult.OK Then
    ProgramCounter = frmInputBox.txtDialogInput.Text
Else
   Exit Sub
End If

我是否需要对
InputBox
进行一些处理,以使其按我期望的方式运行?

对于messagebox,我之前已经有了答案,对于InputBox,与messagebox一样,您需要一个模块1:

Module Module1
    Public theResult As String

    Public Function myInputBox(ByVal promptText As String) As String
        InputBoxForm.lblPrompt.Text = promptText
        InputBoxForm.ShowDialog()
        myInputBox = theResult
    End Function
end Module
您需要输入框表单:

Public Class InputBoxForm

    Private Sub btnOK_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnOK.Click
        theResult = txtInputResponse.Text
        Me.Close()
        Me.Dispose()
    End Sub

    Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
        theResult = ""
        Me.Close()
        Me.Dispose()
    End Sub
End Class
然后你可以这样调用你的输入框:

    Dim theRslt as String = myInputBox("Enter Number of times this program should be executed:")
    MsgBox(theRslt)

您的意思是,如果
文本框
为空,但如果其中包含文本,则单击其中一个
按钮
会关闭对话框?顺便说一句,不要调用
ShowDialog
,然后单独测试
DialogResult
的值。测试
ShowDialog
返回的值,即如果frmMessageBox.ShowDialog()=DialogResult.OK,则测试
返回的值,如果
文本框中没有文本,则表单关闭,并给出从字符串到整数的转换错误。如果
文本框
中有任何内容,那么输入框就在那里什么也不做。但是,如果我输入
frmInputBox.ShowDialog()
,然后说
如果frmMessageBox.ShowDialog()=DialogResult.Ok
,那么它将显示
输入框
,然后输入一个数字,在
输入框
上点击取消,然后在
消息框
上点击Ok,程序将继续运行……什么是F%!???顺便说一句,
MessageBox
InputBox
类似,除了
TextBox
哦,天哪。。。看到
MessageBox
的工作让我觉得我的
InputBox
OK按钮有问题……结果是我从来没有将OK
按钮的
对话框结果设置为
对话框结果。OK
fml。但是由于我的
InputBox
Cancel按钮被设置为
DialogResult.Cancel
,它将工作并打开
MessageBox
。谢谢你的帮助!我终于让我的自定义
MessageBox
InputBox
开始工作了!太棒了!这将无法编译。请不要在没有先测试答案的情况下发布答案。对不起,我之前已经测试过了,今天又测试了一次,它在我身上运行良好,没有任何错误消息,所以我不知道为什么不能编译它。在事件btnTest_单击form1时,我将myTextResult.Text=myInputBox(“请输入您的字符串”),在form inputbox有响应后,后跟btnok或btncancel,myTextResult textBox将作为数据从InputBoxForm的TXInputResponse文本框获取。我不知道,这是因为by not used变量或by myInputBox=MsgBoxResult.Cancel或其他…您是否启用了选项Strict?在vb.net中进行所有编码时都需要启用此选项。在VB6中,设置一个等于函数名的值。在vb.net中,使用Return关键字将值和执行返回给调用代码。您尝试将MsgBoxResult.Cancel分配给字符串。MsgBoxResult.Cancel返回一个整数。