我有下面的代码部分,它可以工作,但我只是想知道是否有一种更简单的方法来编写它,也许用更少的代码行。我的项目由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发布于 2014-06-17 17:55:46
根据这篇MSDN文章,当Visual将布尔值转换为数字类型时,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将数值数据类型值转换为布尔值时,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)发布于 2014-06-17 15:08:09
可以使用如下函数搜索控件:
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但是,如果经常引用控件,则将对控件的引用添加到列表中可能更容易。
发布于 2014-06-17 18:04:43
使用名为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以后,您可以声明需要在整个项目中重用的任何其他自定义转换。
https://stackoverflow.com/questions/24266898
复制相似问题