我有一个winform,里面的 combobox  有 ABCD四个选项 , groupbox.visible=false;groupbox里面有9个lable,9个textbox,5个button,均为隐藏吧,现在要通过触发combobox中的选项改变内容
当我选择A的时候:  
groupbox为visible=true;  9个lable、textbox、button中一部分(lab、txt假设为前5个好了,button 3个)为显示状态
当选择B的时候:
同上,只不过lab、button显示的个数和内容不同了(可能只有3个lab、txt显示,4个button显示)
以下以此类推说的有点混乱,也不知道该怎么形容了实现它我的想法是用委托,但是委托写的很混乱,先编写了一个将控件全部隐藏的类,然后又分别给ABCD写了显示其数量及其内容的方法,来回调用,总之调试起来很失败,委托我不太会用,想问问有没有什么别的解决问题的方法,或者委托应该怎么写才好
求教!~

解决方案 »

  1.   

    其实吧,我的思路,就是用四个面板控件即PANEL控件,然后四个选项分别对应四个PANEL控件,哪个被选了就显示哪个PANEL,这样就简单多了。PANEL的显示与隐藏懂的吧?
      

  2.   

    PANEL的显示与隐藏怎么写???求//
      

  3.   

    有用委托的办法吗?添加四个委托分别在combobox里面,每改变一个就触发委托事件。。
    另外用panel的话岂不是要做4遍那些控件,因为大部分控件仅仅是显示的名字不同了,位置什么的都一样的呀~
    也许是我太在意委托这个东西了。。(看了好多委托的例子,还是没能把委托搞透,所以还是不会用仅仅把例子看懂了而已)
      

  4.   

    不至于吧!!!控件的显示隐藏是经常用到的操作,控件都基本都有visible。
    panel.visible=true设置显示
    panel.visible=false;设置隐藏
      

  5.   


    这个办法以前也用过,但是有点疑问就是,这样做的话设计窗口不就会很难看吗?还是说只要运行时的界面好看,设计时怎么样都无所谓?
    PS:我的想法是在设计时panel不能重叠放置设计,把他们用 “田”字型放置,然后选中哪个就把哪个放在 特定的location坐标上,然后visible=true,并且整个窗体的大小也变成适应的大小,是这样的吗?
      

  6.   

    foreach(control c in grp.controls)
    {
        if(c is TextBox)
        {
            c.Hide(); 或者 c.Show();
        }
    }大概表示个意思,代码自己想想,或者给控件起一些有规律的 name,再根据name 隐藏,
    这个不要用委托,一般委托有必要采用,用的多了代码也不好,你这个功能要实现没必要用委托的
      

  7.   

    亲啊。这么久了还没有搞定啊。。不就是几组选项么?用面板,是因为可以一组直接可用。如果你技术入门了的话,直接动态生成就好了,那还需要神马PANEL。这是最简单的。正如你所说,设计的时候只要你可以选择就好了,四个面板你可以一个一个设计,设计好一个你就隐藏一个,再拖第二个过来,设计好了,再第三个,因为你只有四个或5个选项,毕竟不多,那面板统一控制不好么?然后你要显示某个面板,也可以像你说的那样自己设值,也可以直接设置DOCK属性反正方法真的好多的
      

  8.   

    其实这个我是动态生成的,只不过做好了以后被老师训了一顿,说我现在还没到那个程度,,我也不知道为啥不让我这样做。。本来以为做得挺好的不过这个问题的确,我已经用不下3种办法解决过这个问题了现在已经把它直接做成了几个winform了。。