首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >缩短/优化某些代码

缩短/优化某些代码
EN

Stack Overflow用户
提问于 2014-06-17 14:49:54
回答 3查看 96关注 0票数 0

我有下面的代码部分,它可以工作,但我只是想知道是否有一种更简单的方法来编写它,也许用更少的代码行。我的项目由4个单选按钮组成,我正在尝试保存4中哪个被选中的值。

我问,因为我有多套4-10单选按钮,需要设置保存。

代码:

代码语言:javascript
运行
复制
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
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-06-17 17:55:46

根据这篇MSDN文章,当Visual将布尔值转换为数字类型时,False变为0,True变为-1。因此,您可以尝试下面这样的方法

代码语言:javascript
运行
复制
    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。要读取这些值,可以执行以下操作

代码语言:javascript
运行
复制
    RADtime5.Checked = CInt(My.Settings.SearchTime5)
    RADtime10.Checked = CInt(My.Settings.SearchTime10)
    RADtime30.Checked = CInt(My.Settings.SearchTime30)
    RADtime60.Checked = CInt(My.Settings.SearchTime60)
票数 2
EN

Stack Overflow用户

发布于 2014-06-17 15:08:09

可以使用如下函数搜索控件:

代码语言:javascript
运行
复制
    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

但是,如果经常引用控件,则将对控件的引用添加到列表中可能更容易。

票数 0
EN

Stack Overflow用户

发布于 2014-06-17 18:04:43

使用名为SettingsFormatter的共享方法声明一个名为BooleanToInteger的共享类(接受一个布尔值,返回一个整数)。然后打电话:

代码语言:javascript
运行
复制
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的代码

代码语言:javascript
运行
复制
Public Shared Function BooleanToInteger(value As Boolean) As Integer
  Return If(value, 1, 0)
End Function

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24266898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档