奇怪的是,这个表单是从另一个表单打开的,但如果缺少用户输入,我希望表单关闭并返回初始表单。这不会发生,为什么?
Try
Dim din As Int32 = (Form1.ComboBox1.SelectedValue)
Dim dt As String = Form1.Label1.Text
Dim dt2 As String = Form1.Label2.Text
If din = Nothing Or dt = Nothing Or dt2 = Nothing Then
MessageBox.Show("Please Select a Staff and Date Range", "Error!!!", MessageBoxButtons.OK, MessageBoxIcon.Error)
Me.Hide()
Form1.Show()
Else
' MsgBox(din & "/" & dt & "/" & dt2)
DataGridView1.DataSource = getTable(din, DateTime.Parse(dt), DateTime.Parse(dt2))
DataGridView1.AutoResizeColumns()
Me.Text = "Selected Staff: " & CStr(Form1.ComboBox1.Text)
End If
Catch ex As Exception
MsgBox(ex.Message)
End Try
答案 0 :(得分:2)
您使用Text
Labels
属性
Dim din As Int32 = (Form1.ComboBox1.SelectedValue)
Dim dt As String = Form1.Label1.Text
Dim dt2 As String = Form1.Label2.Text
If din = Nothing Or dt = Nothing Or dt2 = Nothing Then
但它们永远不会是Nothing
。如果您尝试将Nothing
设置为Text
的{{1}}属性,则会使用空字符串。我认为这是你的主要问题。
此外,您将Control
属性转换为SelectedValue
并将其检查为Integer
。请注意,如果Nothing
为true
,则为SelectedValue
,因为它是0
的默认值。
您应该使用调试器并逐步执行代码以解决此类问题。
答案 1 :(得分:0)
谢谢大家,我终于想通了我最好检查原始表单中的用户选择,而不是检查调用表单中的空值。
感谢您的所有投入。感谢。