日期:2014-05-17  浏览次数:20895 次

winform 之间的数据传送
大家好,小弟遇见了个很郁闷的问题,百思不得其解,所以还是将问题发上来跟大家求助
是这样的 winform A ,winform B
A中button1按了之后会弹出B 
在B中选定一个数字,然后A按这个数字检索数据库将数据表示在datagridview中
按理说顺序是如上所述的
但是B选中的数字,怎么传送给A呢(其实这里之前是想传给个全局变量,然后A按这个值运行,但是这里又出现,A怎么感应这个全局变量的变化呢,然后擦,不知道该怎么写了)

想请教下各位,大家在写这个的时候是怎么写的呢?
winform各个窗口之间的交互是怎么样实现的呢?
------最佳解决方案--------------------
http://bbs.csdn.net/topics/390128592
------其他解决方案--------------------
弹出B的时候,将A本身(this)传给B的属性,在B里就可以调用这个属性设置A中的成员
------其他解决方案--------------------
二楼的方法试了,但是并不能调用A中的事件(事后想想,当然,那是private诶)
三楼,你那个是传值的方法啦,我是想调用事件,并且是B触发A的
------其他解决方案--------------------
楼主你不一定要做成触发A的事件吧,选中了B中的数字后,触发了B里的事件,直接在事件里修改A的显示就可以啦,也就是1楼和2楼说的窗体传值的问题。在B的事件里修改A,这样不就达到你说的效果了
------其他解决方案--------------------
引用:
http://bbs.csdn.net/topics/390128592

总有一种适用于你
------其他解决方案--------------------
二楼详解啊 楼主认真看看
------其他解决方案--------------------
引用:
二楼的方法试了,但是并不能调用A中的事件(事后想想,当然,那是private诶)
三楼,你那个是传值的方法啦,我是想调用事件,并且是B触发A的


用事件委托,,,
我都懒得写了,,还是跟你写吧。。。

B窗口中
        public delegate void RefreshHandler(int num);
        public event RefreshHandler RefreshList;

B中某个事件中写下如下代码
   if (RefreshList != null)
     RefreshList(带入你要传的数字);

A窗口中打开B窗口时候如下代码
FormA A=new FormA();
a.RefreshList += new FormB.RefreshHandler(a_handleRefresh);
A.show();

    void a_handleRefresh(int num)
        { 
               //查询操作,那个num就是B窗体中数字。。。
}

------其他解决方案--------------------
a.RefreshList +=这个地方在A窗口中输入后连续按2次Tab键会跟你自动创建后面方法的。。不用你手敲,,
很详细了,,再不会就没法了。。
------其他解决方案--------------------
嗯不错事件和委托
------其他解决方案--------------------
不好意思,各位,因为前几天生病了(我这边天气一下就凉了啊~~~大家呢?小心感冒~)
今天才上网,谢谢HAPPY的详细解答
在此结贴了