我写了一个程序,父窗体中有一个Listview控件和一个按钮,当载入时ListView显示数据库中的信息,当点击按钮时弹出添加信息子窗体,当添加完成点击子窗体确定按钮后我想让父窗体里的listView也跟着数据库的更新而更新,我想的方法是在子窗体里重新调用父窗体里的Form_load方法,但不知道如何调用父窗体里的方法,请大家想想办法!!!!(不用这种方法,其它办法也行)先谢谢了!!!

解决方案 »

  1.   

    把父窗体的Listview当做参数通过构造函数传到子窗体,然后在子窗体中更改Listview的数据~
      

  2.   


    public partial class Form2 : Form
        {        //密码窗体
           
            public Form2()
            {
                InitializeComponent();
            }
            public delegate void mydelegate();//定义一个委托 
            public static  event mydelegate myevent;//定义上诉委托类型的事件 
            private void button1_Click(object sender, EventArgs e)
            {
             
                if (myevent != null)
                {
                    myevent();
                }         }
    C# code
     private void button2_Click(object sender, EventArgs e)
            {
                Form2 fm2 = new Form2();
                Form2.myevent += new Form2.mydelegate(fm2_myevent);
                fm2.Show(); 
                
            }        private void Form1_Load(object sender, EventArgs e)
            {
                MessageBox.Show("你好");
            }
            void fm2_myevent()
            {
                Form1_Load(null,null);
            }
    http://topic.csdn.net/u/20100106/20/e9697297-75f9-4450-aaa9-da0da416cf41.html?39668
      

  3.   

    委托实现
    Form2 f2 = new Form2();
     private void button1_Click(object sender, EventArgs e)
            {
                f2.MyA+= new Form2.AA(B);
                f2.Show();
            }
    void B(string str){}public delegate void AA(string str);
    public event AA MyA;
     private void button1_Click(object sender, EventArgs e)
      {
            this.MyA();
       }
      

  4.   

    把Form_load方法里更新listview内容打包成一个新的方法比如private void listview_update(){}. 把主窗口的引用直接传递给子窗口,那样在子窗口中就可以直接对主窗口中的所有公共对象进行操作了。比如
    public partial class MainForm: Form
        {
            public MainForm()
            {
                InitializeComponent();
                SubForm subform=new SubForm(this);
            }
            private void MainForm_Load(object sender, EventArgs e)
            {
               listview_update();
            }
            private void listview_update()
            {
                 // code
            }    }public partial class SubForm: Form
        {
          MainForm referenceToMainForm=null;
            public SubForm(MainForm mainform)
            {
                InitializeComponent();
                referenceToMainForm=mainform;
            }
            private void button1_Click(object sender, EventArgs e)
            {
                referenceToMainForm.listview_update();
            }
    }
      

  5.   

    不需要那么复杂。子窗体SubForm:
    protected void btnOk_Click(object sender,EventArgs arg)
    {
       //插入数据的代码
       if(插入数据成功)
          this.DialogResult=DialogResult.Ok;
    }父窗体:
    protected void btnEidt_Click(object sender,EventArgs arg)
    {
       //弹出编辑数据的子窗体
       if(new SubForm().ShowDialog()==DialogResult.Ok)
       {
           //再次调用ListView数据绑定代码。
        }
    }
      

  6.   

    参考:http://blog.csdn.net/mngzilin/archive/2010/01/01/5118256.aspx