主题:请教WinForm窗体互相调用的问题
KfpKaKa
[专家分:0] 发布于 2007-01-12 15:33:00
程序一开始运行的是Form1,单机Form1上的按钮后调用Form2但不关闭Form1,此时Form1和Form2同时存在,再单击Form2上的按钮后调用Form3,此时同时关闭Form1和Form2,显示Form3,请问要怎么做?发个例子给我看好吗?新手初学C#,谢谢大家的帮忙啦
回复列表 (共5个回复)
沙发
至尊宝 [专家分:90] 发布于 2007-01-15 13:14:00
C#vb是有区别的
C#要对窗台也要定义的
板凳
yl1207 [专家分:130] 发布于 2007-01-15 19:36:00
不好意思,你的Form1没办法关闭,因为是主线程是在的界面,如果你关闭,或释放掉,程序就会整个的终止掉.有2个办法解决你的
只有大概的思路,很简单你一看就懂了
1.隐藏
当你单击Form1的按钮,new Form2的界面后,他show()之前.Form1的名字.Hide();这个可以隐藏界面1,通理Form3也一样的,如果要他恢复可见,就要重新show();
2.可见
界面都有一个visible的属性,true就是可见,false就为不可见,和隐藏的差不多,重新可见就可以Form1.visible=true;就可以了
3 楼
marki1986 [专家分:0] 发布于 2007-01-16 13:32:00
做出来了,发个邮件给我,我把代码发给你.
我的邮箱是 marki1986@126.com
以后也多交流哟,呵呵.
4 楼
stevenzhuhui [专家分:80] 发布于 2007-01-20 22:47:00
form1
pulbic delegate void Function1(int a) 声明委托
publbic Function1 myFunction 定义委托
form1 中某个方法或函数
void aaa()
{
myFunction (11);
}
Form2
void bbb()
{
Form1 myForm = new Form1();
myForm.myFunction = new Form2.Form1.Function1(my_NewFunction); //定义委托
myForm.Show()
}
void my_NewFunction(int b)
{
MessageBox.Show(b.ToString());
}
这样当执行form1中的aaa方法时,form2就可以接受到参数1并弹出MessageBox
以上是.net 2003中的写法
.net 2005 应该是myForm.myFunction += new System.EventHandler(my_NewFunction); //New委托事件
具体的记不清楚,写代码时按TAB键,new 后面的事件会自动生成
当关闭时要记得myForm.myFunction -= new System.EventHandler(my_NewFunction); //删除委托事件
5 楼
yl1207 [专家分:130] 发布于 2007-02-13 11:49:00
最简单的办法,多界面传输参数,用构造方法来传递,很好解决的
我来回复