今天在CSDN论坛上瞎逛,看见有人问这个问题,如何从一个窗体的外部访问窗体内部控件(比如一个按钮)的相关属性。我第一反应是用一个写一个类,这个类继承这个窗体,后来发现不行,因为窗体中的按钮被申明为private的,即使继承了也访问不了父类成员。其实,窗体就是一个类,类有继承,知道了这一点,就很好办了 ,比如最简单的,就是把按钮申明为public或者internal或者protected,这样在其子类中就可以访问父类中的按钮了。但是这样不好,扩大了成员变量的作用范围,可能会导致一些意想不到的不安全因素,我们可以用以下几句话来代替,能达到同样的效果:
Form1 frm = new Form1();
Control[] rst = frm .Controls.Find("button1", false);
Button btn = (Button)rst[0];
btn.Text = "newName";
MessageBox.Show(btn.Text);
这样,名称为button1的按钮名称就被改为newName了。