缩短/优化一些代码

时间:2014-06-17 14:49:54

标签: vb.net optimization

我有以下代码部分,它可以工作,但我只是想知道是否有更简单的方法来编写它,可能用更少的代码行。我的项目由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

3 个答案:

答案 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

您可以稍后声明需要在整个项目中重复使用的任何其他自定义转换。