Foxtable(狐表)用户栏目专家坐堂 → 这样的代码能否精简


  共有8894人关注过本帖树形打印复制链接

主题:这样的代码能否精简

帅哥哟,离线,有人找我吗?
老有所乐
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
这样的代码能否精简  发帖心情 Post By:2012/3/28 19:57:00 [只看该作者]

下面的代码能否精简,因为还有好多需要写上,哪么这段代码就好长,请高手帮忙,谢谢!

Dim i1 As String = e.Form.Controls("label6").text    '定义一个组合框,以供在窗口显示表用 
If i1= "现金表" Then
    e.Form.Controls("工资卡").Visible =False '

    e.Form.Controls("银行存款").Visible =False '

    e.Form.Controls("债权").Visible =False '

 Else If i1 = "工资卡" Then
    e.Form.Controls("银行存款").Visible =False '

    e.Form.Controls("债权").Visible =False '

    e.Form.Controls("现金表").Visible =False '

Else If i1= "银行存款" Then
     e.Form.Controls("工资卡").Visible =False '

     e.Form.Controls("债权").Visible =False '

     e.Form.Controls("现金表").Visible =False '

Else If i1= "债权" Then
    e.Form.Controls("工资卡").Visible =False '

    e.Form.Controls("银行存款").Visible =False '

    e.Form.Controls("现金表").Visible =False '

End  If


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/3/28 20:38:00 [只看该作者]

Dim i1 As String = e.Form.Controls("label6").text
Dim ss As String = "现金表|工资卡|银行存款|债权"
For Each s As String In ss.Split("|")
    If i1 = s

    Else
       e.Form.Controls(" & s & ").Visible =False
    End If
Next


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2012/3/28 21:09:00 [只看该作者]

Dim i1 As String = e.Form.Controls("label6").text

e.Form.Controls("现金表").Visible = (i1 = "现金表")

e.Form.Controls("工资卡").Visible =(i1 = "工资卡")

e.Form.Controls("银行存款").Visible =(i1 = "银行存款")

e.Form.Controls("债权").Visible =(i1 = "债权")

简洁不重要,可读性才重要:

每个控件是否可见,取决于标签的值是不是和该控件名称相等

 

 


 回到顶部
帅哥哟,离线,有人找我吗?
lxl
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2012/3/28 21:25:00 [只看该作者]

如果控件比较多的话,把这些控件放在一个面板里面,假设面板是 Panel1

 

Dim i1 As String = e.Form.Controls("label6").text

For Each ctl As System.Windows.Forms.Control In  e.Form.Controls("Panel1").BaseControl.Controls

    ctl.Visible = (i1 = ctl.Name)

Next


 回到顶部
帅哥哟,离线,有人找我吗?
老有所乐
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2012/3/28 22:00:00 [只看该作者]

谢谢mr725 和lxl版主 老师的指教!

3搂的效果最好,2搂的提示找不到"& s &" 控件, 4搂不能隐藏非选中的标签


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2012/3/28 22:12:00 [只看该作者]

"& s &"   改为: s    不要那些符号···

 回到顶部
帅哥哟,离线,有人找我吗?
老有所乐
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2012/3/28 22:20:00 [只看该作者]

是的,我是改为s后方可用


 回到顶部
帅哥哟,离线,有人找我吗?
dark272710
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:190 积分:1445 威望:0 精华:0 注册:2011/6/17 6:33:00
  发帖心情 Post By:2012/3/29 8:33:00 [只看该作者]

原来可以这样写。。。等完工后我也要大幅简化代码了。。。

 回到顶部
帅哥哟,离线,有人找我吗?
程兴刚
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2012/3/29 9:28:00 [只看该作者]

Dim i1 As String = e.Form.Controls("label6").text
Dim ss As String = "现金表|工资卡|银行存款|债权"
For Each s As String In ss.Split("|")

     e.Form.Controls(" & s & ").Visible =(i1 = s)

Next


 回到顶部
帅哥哟,离线,有人找我吗?
老有所乐
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:746 积分:6673 威望:0 精华:1 注册:2008/9/1 11:46:00
  发帖心情 Post By:2012/3/29 10:00:00 [只看该作者]

越来越精简,谢谢!

 回到顶部