C#中关于不同form中控制其他form的控件问题

比如我只有在form1中有printDocument和printPreviewDialog控件,在生成打印表格之后,判断打印的表格是否超出纸张宽度,如果是,则弹出form2,然后在form2中筛选显示列,确定之后重新生成表格。问题就在这里,form2中的如何去调用form1中的这两个控件呢

第1个回答  2013-06-02
把这两个控件设置成public
然后form1弹出form2这样写
Form2 form2=new Form2();
form2.Owner=this;
form2.Show();

然后form2里面或者这两个控件这样获取
Form1 form1=(From1)this.Owner;
form1.printDocument
form1.printPreviewDialog

上面两个对象就可以直接获取的到
这是利用子父窗体强制转换,设置访问修饰符 解决的

当然也可以使用委托,委托传递的是这个控件你需要访问的方法
比较的单一,一个委托只有一个类型的方法
这个你可以直接获取到控件,当然属性和方法都有本回答被网友采纳
第2个回答  2013-06-01

其实你可以换一个思路,在你的form1中,既然放了这两个控件,那肯定会被调用,如果实在没有,就加个可以调用的上去呀,比如说button,然后可以用form2中的某个事件,去激发form1中的按钮事件。form2的按钮事件设置为public,form1中按钮事件代码:

Form2 frm2 = new Form2();
frm2.Show();
frm. button1_Click(sender,e);

本回答被提问者采纳
相似回答