我在panel上动态生成了两个文本框和两个按钮,比如textBox1,textBox2,buton1,buton2。textBox1,textBox2的内容是根据下级装置的上送的报文的标志位来显示状态的,比如某一位为1,textBox1显示“允许”,为0显示不“允许”,button1,button2的enable属性也根据下级装置上送的标志位来控制按钮是否允许点击。我有一个专门解析报文的函数,我希望当我能够在解析下级装置上送的报文中根据某些标志位来实时的改变textBox1,textBox2,buton1,buton2的内容和属性。当然,在解析报文的时候,动态生成的textBox1,textBox2,buton1,buton2是存在的,并没有clear。忘高人指点一二。

解决方案 »

  1.   


    //加
                Button btn = new Button();
                btn.Name = "btn1";
                btn.Text = "aaa";
                this.panel1.Controls.Add(btn);
    //取
                Button nbtn = (Button)this.panel1.Controls.Find("btn1", true)[0];
                nbtn.Enabled = false;
      

  2.   

    Controls.Find
    或者循环查找控件foreach (Control c in this.panel1.Controls) 
                { 
                    if (c is Button) 
                    { 
                         c.Text="sss";
                    } 
                }
      

  3.   

    谢谢,我用的是c#2003,Button nbtn = (Button)this.panel1.Controls.Find("btn1", true)[0];,该表达式中我找不到Find。望再指点一下。
      

  4.   

    那就用2楼的吧,改一下:
    //取
    foreach (Control c in this.panel1.Controls) 
                { 
                    if (c is Button && ((Button)c).Name=="btn1") 
                    { 
                        c.Enabled = false; 
                        break;
                    } 
                }
      

  5.   

    我昨天刚问过类似问题给人参考一下。我的好像比你的还复杂。
    http://topic.csdn.net/u/20090225/16/d4851adb-55de-46e8-8d57-836a1fae63b0.html
      

  6.   

    1楼和2楼的高手好强大,1楼的代码经验证,很好用,我找这个问题的解答找了两天了,非常感谢,而且用foreach来改写的话,就可以实现遍历,非常好用!