如果或基于单选按钮单击的案例陈述



我正在尝试找到一种基于单选按钮选择来运行一些代码的方法。我在分组框中有几个单选按钮,它们将根据那里的选择运行不同的代码。现在,作为一个相当新的 VB.NET 用户,我正在努力正确编码。

我最好使用 IF 语句或 SELECT CASE 语句。我尝试使用设置为布尔值的标志来指示是否选择了 button1,设置标志 = true。这就是我所得到的。我正在使用 CheckedChanged 事件来处理事件更改。我已经包含了一些代码,如果有人可以启动我,将不胜感激。 非常感谢。

Private Sub rdbBoxReturn_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles rdbBoxReturn.CheckedChanged
'code goes here
 flagBoxReturn = True
End Sub

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
        Try
            If flagBoxReturn = True Then
                MessageBox.Show(CStr(flagBoxReturn))
                Return
            Else
                DBConnection.connect()
                sql = "SELECT MAX([Id]) from Request Boxes WHERE Customer = '" & cmbCustomer.Text & "' "
                'MessageBox.Show(cmbCustomer.Text)
                'sql = "INSERT INTO [Requests]  ("")"
                'Dim sql As String = "SELECT * from Boxes WHERE Customer = ? AND Status = 'i'"
                Dim cmd As New OleDb.OleDbCommand
                Dim id As String
                Dim requestor As String = "DEMO"
                Dim intake As String = "I"
                Dim status As String = "O"
                'cmd.Parameters.AddWithValue("@p1", cmbCustomer.Text)
                cmd.CommandText = sql
                cmd.Connection = oledbCnn
                dr = cmd.ExecuteReader

                'lvSelectRequestItems.Items.Clear()
                While dr.Read()
                    id = CStr(CInt(dr.Item(0).ToString))
                    id = String.Format("{0:D6}", (Convert.ToInt32(id) + 1))
                    'id = CStr(CDbl(id) + 1)
                End While
                MessageBox.Show(CStr(id))
                dr.Close()
                sql = "INSERT INTO [Request Boxes] ([Request no], Customer, Dept, [Type], [Service level], [Date-time received], [Received by], [Date-time due], Quantity, [Cust requestor], Status ) " &
                "VALUES ('" & id & "', '" & cmbCustomer.Text.ToUpper & "', '" & cmbDept.Text & "', '" & intake.ToString & "', '" & rbServiceLevel.ToString & "', '" & dtpDateReceived.Value & "', '" & requestor.ToString & "', '" & dtpDateDue.Value & "', '" & txtBoxQuantity.Text & "', '" & requestor.ToString & "', '" & status & "')"
                cmd.CommandText = sql
                cmd.ExecuteNonQuery()
                cmd.Dispose()
                oledbCnn.Close()
                flagBoxReturn = False
                MessageBox.Show("Your record number: " & id & " Was entered successfully")
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

这样的事情怎么样...

Public Enum SaveOption As Int32
  DoNothing = 0
  DoSomething = 1    '  Obviously rename this to something that makes sense in your situation.
End Enum
Public Function GetSaveOption() As SaveOption
  Dim result As SaveOption = SaveOption.DoNothing
  If rdbBoxReturn.Checked Then
    result = DoSomething
  End If
  '  Add as many if statements her to cover all your radio buttons.
  Return result
End Function

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSave.Click
  Select Case GetSaveOption
    Case SaveOption.DoNothing
      Exit Sub
    Case SaveOption.DoSomething
      ' Your save code here
  End Select
End Sub

此方法通过将 UI 元素状态转换为程序状态,使代码更具可读性。

如果比较次数较少,则 Switch 语句更好如果你有一个单选按钮列表控件,那会比在这种情况下好得多switch 语句可以传递索引变量(无线电的 SelectedIndex 属性)按钮列表),但该控件在 Web 窗体中可用,或者可以在 WIN 窗体中可用如果您找到一些免费的用户/自定义控件等。

所以在你的情况下,最好使用 if else 语句

最新更新