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

解决方案 »

  1.   

    弹出B的时候,将A本身(this)传给B的属性,在B里就可以调用这个属性设置A中的成员
      

  2.   

    http://bbs.csdn.net/topics/390128592
      

  3.   

    二楼的方法试了,但是并不能调用A中的事件(事后想想,当然,那是private诶)
    三楼,你那个是传值的方法啦,我是想调用事件,并且是B触发A的
      

  4.   

    楼主你不一定要做成触发A的事件吧,选中了B中的数字后,触发了B里的事件,直接在事件里修改A的显示就可以啦,也就是1楼和2楼说的窗体传值的问题。在B的事件里修改A,这样不就达到你说的效果了
      

  5.   


    用事件委托,,,
    我都懒得写了,,还是跟你写吧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窗体中数字
    }
      

  6.   

    a.RefreshList +=这个地方在A窗口中输入后连续按2次Tab键会跟你自动创建后面方法的。。不用你手敲,,
    很详细了,,再不会就没法了。。
      

  7.   

    不好意思,各位,因为前几天生病了(我这边天气一下就凉了啊~~~大家呢?小心感冒~)
    今天才上网,谢谢HAPPY的详细解答
    在此结贴了