首页 文章

从另一个表单更新datagridview中的选定行

提问于
浏览
1

我有2个Form Form1和Form2,我想从Form2更新Form1中的datagridview我首先在Form1中选择datagridview行,然后单击一个按钮打开Form2 . 在Form2中,我输入新数据然后保存 .

我怎么能这样做?

2 回答

  • 0

    您可以在 Form1 上创建一个公共方法来插入行 . 我们称之为 LoadData . 这将接收一组指示 Form2 上的数据的参数 .

    public void LoadData( ... )
    {
        // load the data into the data grid
    }
    

    然后添加一个新的构造函数到 Form2

    public Form2(Form1 referrer)
    {
        _referrer = referrer;
    }
    

    其中 _referrerprivate 字段,其类型为 Form1

    private Form1 _referrer;
    

    然后当你加载 Form2 时,传入 this ,因为你在 Form1 上:

    var f = new Form2(this);
    

    最后,当您想要添加 Form2 中的数据时,请执行以下操作:

    _referrer.LoadData( ... );
    
  • 0

    我的解决方案与@Michael Perrenoud相似 . 您的目的是将值从form1传递给form2 . 如何通过?通常你需要通过form2的构造函数将form1中的对象传递给form2 . 那么,要通过什么?其他人说传递form1本身或传递gridview控件,但我更喜欢传递你真正想在form2中使用的数据,为什么?因为当你传递一个控件(窗体或网格视图)时,你需要用它来分析并获取数据,然后在form2中添加gridview2,想一想,当你从form1传递控制时,也许有一天你将替换gridview其他控件如listview或treeview,甚至有一天你可能放弃form1,所以你需要修改和重构你的form2 . 但是如果只传递数据,则可以重用form2 . 这是我的示例代码:

    首先,添加一个引用传递数据的私有字段

    private object mydata = null;
    

    添加一个函数以使用传递的数据填充gridview

    public void FillData( ... )
    {
        if(mydata != null)
        {
        //add the data into gridview
         }
    }
    

    然后,向Form2添加一个新的构造函数:

    public Form2(object data)
    {
        _mydata = data;
    }
    

    当你想要显示form2时,请从gridview1获取数据

    void ShowData()
    {
         object mydata = null;
         //get the data from selected rows and set to mydata
         Form2 f = new Form2(mydata);
         f.ShowDialog();
    }
    

相关问题