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返回一个整数。