我有以下代码部分,它可以工作,但我只是想知道是否有更简单的方法来编写它,可能用更少的代码行。我的项目由4个单选按钮组成,我试图保存选择4中的哪一个的值。
我问,因为我有多组需要保存设置的4-10个单选按钮。
代码:
Public sTime5 As Integer
Public sTime10 As Integer
Public sTime30 As Integer
Public sTime60 As Integer
'Set Time
If RADtime5.Checked = True Then
sTime5 = 1
Else
sTime5 = 0
End If
If RADtime10.Checked = True Then
sTime10 = 1
Else
sTime10 = 0
End If
If RADtime30.Checked = True Then
sTime30 = 1
Else
sTime30 = 0
End If
If RADtime60.Checked = True Then
sTime60 = 1
Else
sTime60 = 0
End If
My.Settings.SearchTime5 = sTime5
My.Settings.SearchTime10 = sTime10
My.Settings.SearchTime30 = sTime30
My.Settings.SearchTime60 = sTime60
答案 0 :(得分:2)
根据this MSDN article,当Visual Basic将布尔值转换为数字类型时,False变为0,True变为-1。所以,你可以试试类似下面的内容
My.Settings.SearchTime5 = -CInt(RADtime5.Checked)
My.Settings.SearchTime10 = -CInt(RADtime10.Checked)
My.Settings.SearchTime30 = -CInt(RADtime30.Checked)
My.Settings.SearchTime60 = -CInt(RADtime60.Checked)
或者您可以使用Math.Abs来获取其绝对值。
修改强>
当Visual Basic将数值数据类型值转换为布尔值时,0变为False,所有其他值变为True。要读取值,您可以执行以下操作
RADtime5.Checked = CInt(My.Settings.SearchTime5)
RADtime10.Checked = CInt(My.Settings.SearchTime10)
RADtime30.Checked = CInt(My.Settings.SearchTime30)
RADtime60.Checked = CInt(My.Settings.SearchTime60)
答案 1 :(得分:0)
您可以使用以下函数搜索控件:
My.Settings.SearchTime5 = GetCheck(5)
My.Settings.SearchTime10 = GetCheck(10)
My.Settings.SearchTime30 = GetCheck(30)
My.Settings.SearchTime60 = GetCheck(60)
Private Function LabelControl(ByVal index As Integer) As Integer
Dim rad As RadioButton = CType(Me.Controls.Find("RADtime" + index.ToString, True).First, RadioButton)
Return If(rad.Checked, 1, 0)
End Function
但是,如果您经常引用它们,可能更容易将控件的引用添加到列表中
答案 2 :(得分:0)
声明一个名为SettingsFormatter的共享类,使用一个名为BooleanToInteger
的共享方法(接受一个布尔值,返回一个整数)。然后致电:
My.Settings.SearchTime5 = SettingsFormatter.BooleanToInteger(RADtime5.Checked)
My.Settings.SearchTime10 = SettingsFormatter.BooleanToInteger(RADtime10.Checked)
My.Settings.SearchTime30 = SettingsFormatter.BooleanToInteger(RADtime30.Checked)
My.Settings.SearchTime60 = SettingsFormatter.BooleanToInteger(RADtime60.Checked)
以下是BooleanToInteger
的代码:
Public Shared Function BooleanToInteger(value As Boolean) As Integer
Return If(value, 1, 0)
End Function
您可以稍后声明需要在整个项目中重复使用的任何其他自定义转换。