以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样的代码能否精简  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17923)

--  作者:老有所乐
--  发布时间: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
--  发布时间: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
--  发布时间: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
--  发布时间: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


--  作者:老有所乐
--  发布时间:2012/3/28 22:00:00
--  

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

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


--  作者:mr725
--  发布时间:2012/3/28 22:12:00
--  
"& s &"   改为: s    不要那些符号···
--  作者:老有所乐
--  发布时间:2012/3/28 22:20:00
--  

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


--  作者:dark272710
--  发布时间:2012/3/29 8:33:00
--  
原来可以这样写。。。等完工后我也要大幅简化代码了。。。
--  作者:程兴刚
--  发布时间: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


--  作者:老有所乐
--  发布时间:2012/3/29 10:00:00
--  
越来越精简,谢谢!