我有两个窗体,一个是添加数据的窗体,一个是显示数据的窗体(Datagridview加载数据),我在添加数据的窗体中添加一条数据后,退出添加数据的窗体     ,退出的方法中如何写,才能调用显示数据窗体中的刷新方法,将添加的数据显示出来?
不知道能不能看明白?

解决方案 »

  1.   

    窗体间传递datatable,或者用委托等等,或者直接访问其他窗体控件(控件的modifers属性设置为public)
      

  2.   

    1.在显示数据的窗体写个public方法用于刷新数据
    2.在添加数据窗体里保存显示窗体的实例
    3.在添加数据窗体close的时候调用显示的窗体实例的刷新方法
      

  3.   

    Modal窗体吗,如果是,调用返回时不时有个DialogResult.YES NO的玩意吗,
    模态窗关闭后,对象并没有结束生命周期,通过它引用还可以调用你设置的信息,做操作就行了。
      

  4.   

    是不是winform程序?
    提下我的想法:
    如果你有新建两个form1 和 form2
    如果你的退出事件在form1中,
    click_back(object sender,EventArgs e)
    {
        //关掉当前的窗口
        this.form1.close();
        //开启新的窗口
         form2 fm= new form2();
         fm.ShowDialog();
    }
    这样你就打开了你所谓的有gridview的窗口了,那么你可以在你的构造函数中重新加载数据了
    就是在form2中的函数public form2()
    {
         InitializeComponent();
         //下面开始刷新你的数据
         gridview.DataSource=xxxxxx;       
    }这样说的清楚了吧
      

  5.   

    你的添加数据的窗体应该是从显示数据的窗体上点按钮或其他的调出来的吧Form1是显示数据的。form2是添加数据的Form2 f2=new Form2();f2.ShowDialog();
    在这之后调用刷新数据的方法就行了啊 
      

  6.   

    添加数据的窗体中,弄一个Form类型的变量,保存显示数据窗体的实例(可以通过方法用参数传递过来);当添加数据的窗体关闭时,调用Form类型变量的相应方法就好了。注意访问权限。
      

  7.   

    显示窗口中:添加数据窗口 form=new 添加数据窗口;
    if(form.ShowDialog()==DialogResult.Cancle)
        刷新数据;//重新绑定datagridview数据
      

  8.   

    this.Close();
    frm2 fm=new frm2();
    fm2.Show();
      

  9.   

    把你那个窗体中的方法设置成public就可以了
      

  10.   

    Form1数据显示窗体; Form2新增数据窗体
    1.如果新增数据窗体Form2是数据显示窗体Form1的弹出窗体:
    form1中弹出form2的时候这么写
    private void ShowForm2()
    {
         Form2 form2 = new Form2();
         from2.show();
         Form1.刷新方法();
    }
    2.如果新增数据窗体Form2不是数据显示窗体Form1的弹出窗体:
    首先form1中添加public类型的刷新方法
    public void refrish(){}
    form2中关闭方法内添加如下代码
    Form1 form1 = new Form1();//创建窗体1实例
    form1.refrish();//调用窗体1刷新方法
    3.如果想要关闭窗体2的时候显示窗体1就更简单了
    窗体2关闭时增加代码
    Form1 form1 = new Form1();//创建窗体1实例
    form1.show();
      

  11.   


    需要这么麻烦吗?刷新数据的方法应该还是在显示数据的窗体里使用啊
    唯一要判断的,是添加数据的窗体到底添加成功了还是没成功,没成功不必刷新可以用form.DialogResult来判断
      

  12.   

    如果添加窗体是显示窗体show出来的,那在show出来这句的后面加刷新方法不就行了吗
      

  13.   

    楼主你的问题其实是跨窗体操作,2个方法:
    1:................我忘了!
    2: 用构造函数做,在Form2里可以操作Form1里所有Public方法
      

  14.   

    你就是关闭插入页面然后显示查询页面  显示最新数据是吧
    单击退出隐藏插入那个窗体
    然后显示查询窗体
    查询的时候写在load事件不就好了吗
      

  15.   

    this.Close();
    frm2 fm=new frm2();
    fm2.Show();  
    窗体也是类,先new个对象,在执行对象的方法
      

  16.   

    如果需要直接从窗体之间调函数,需要写成静态对象.一般会在显示数据的窗体中建立 刷新的函数 和 一个打开按钮在打开按钮的单击事件中 new 一个 添加数据的窗体用对话框的方式打开调用 ShowDialog() 方法然后在 ShowDialog() 下面调用 刷新的函数 即可。
      

  17.   

    用委托与事件比较方便
    http://blog.csdn.net/qiujialongjjj/article/details/8229308
      

  18.   

    窗体1:
     public partial class Form1 : Form
        {
            public delegate void DelegateRefreshDGV();
            public Form1()
            {
                InitializeComponent();
            }        private void button1_Click(object sender, EventArgs e)
            {
              
                DelegateRefreshDGV dgv=new DelegateRefreshDGV (refreshDGV);
                Form2 f2 = new Form2(dgv);实例化窗体2
                f2.Show();弹出窗体2
            }
            private void refreshDGV()// 刷新的方法
            {
              
            }
        }窗体2 调用委托:
     public partial class Form2 : Form
        {
            private Form1.DelegateRefreshDGV dgv;
            public Form2(Form1.DelegateRefreshDGV _dgv)
            {
                InitializeComponent();
                this.dgv = _dgv;
            }        private void button1_Click(object sender, EventArgs e)
            {
                dgv();调用委托方法
                this.Close();
            }
        }
      

  19.   

    直接在new 的时候 给 form2 传过去就OK
      

  20.   

    1. 你是需要第二个窗体类的方法,还是需要第二个窗体的功能?
    如果只是需要那个类的一个方法,建议你将此方法封装成一个公用类,然后两个窗口可以一起调用。
    如果是需要第二个窗体运作,但又不需要第二个窗体出现,可以创建第二个窗体然后 hiden(),
    记得将方法写成pbulic 然后直接用实例调用即可。
      

  21.   

    在form2里一个form1的关闭事件然后刷新DATAGRIDVIEW就行了
      

  22.   

    form2里写一个form1的关闭事件(form1_closed)
      

  23.   

    public partial class Form1 : Form
        {
            TextBox txtBox;
            public Form1()
            {
                InitializeComponent();
                this.Text = "我是窗体1";
                txtBox = new TextBox();
                this.Controls.Add(txtBox);
                
                Form2 f2 = new Form2() { Text = "我是窗体2" };
                f2.ShowDialog(this);
                txtBox.Text = f2.txtBox.Text;
            }
        }    public class Form2 : Form
        {
            public TextBox txtBox;
            public Form2()
            {
                txtBox = new TextBox();
                this.Controls.Add(txtBox);
            }       
        }
    给分