我想实现这样的功能,当关闭此窗体,就执行令一个已经打开的窗体的刷新功能,我写的代码如下:
        public void net_xjcjbm_skjsxx_FormClosed(object sender, FormClosedEventArgs e)
        {
            try
            {
                net_xjcjbm_gbskxxlr.net_xjcjbm_gbskxxlr1.dataGridViewX3.DataSource = skxxlr.gbskxxlr(jgmc1, nj1, xq1, xq2);
                net_xjcjbm_gbskxxlr.net_xjcjbm_gbskxxlr1.dataGridViewX3.DataMember = "kmb";
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
上面的net_xjcjbm_gbskxxlr是令外一个已经打开了的窗体,我已经将它设为静态公共的public static net_xjcjbm_gbskxxlr net_xjcjbm_gbskxxlr1;
        public net_xjcjbm_gbskxxlr()
        {
            InitializeComponent();
            net_xjcjbm_gbskxxlr1 = this; 
        }但是,就是实现不了这刷新的功能。
帮帮我吧,各位高手们!
谢谢啦!

解决方案 »

  1.   

    楼主定义的这些窗体名字,太......
    估计楼主问的还是窗体间传值的问题。
    给你个例子参考
    http://topic.csdn.net/u/20081013/16/fdd817bd-3ede-494f-b8b0-9ed423b02839.html
      

  2.   

    比较奇怪为什么要在这个事件中写。
    写在net_xjcjbm_gbskxxlr1.ShowDialog()后面不行吗?
      

  3.   

    窗体的名字实在是,注意编码规范啊:(为了叙述简便,做如下约定)
    ChildFrm  : net_xjcjbm_skjsxx
    MainFrm   : net_xjcjbm_gbskxxlr
    1、在 ChildFrm 中定义一个事件,
    public delegate void RefreshEventHandle();
    public event RefreshEventHandle OnRefreshEvent;2、在 MainFrm 中确定刷新的事件处理函数;
    // 显示ChildFrm之前,加上如下代码
    ChildFrm.OnRefreshEvent += new RefreshEventHandle(this.RefreshData);3、在 MainFrm 中添加回调函数:
    private void RefreshData()
    {
    // 关闭 ChildFrm 时,想做的任何事情
    }3、在 ChildFrm 中的 ChildFrm_FormClosed 事件(即:public void net_xjcjbm_skjsxx_FormClosed(object sender, FormClosedEventArgs e) )中加入如下代码:
    if (null != OnRefreshEvent)
    {
    this.OnRefreshEvent();
    }
    总结一下吧: 利用事件和委托完成,比较简单。
      

  4.   

    用委托啊
    可以看看这个帖子。
    http://topic.csdn.net/u/20080926/09/446af9ff-11e1-4965-aa54-e30b168391bb.html