将datagridview从一种形式传递到另一种形式

本文关键字:另一种 一种 datagridview | 更新日期: 2023-09-27 18:08:12

我想通过我的datagridview从form1到form2。我已经尝试过构造函数,但没有结果,第二种形式的datagridview是空的。谁能帮我一下,我忙了好几个小时了。我不使用sql,我不需要使用数据表。下面是我的代码:

我在datagridview2的cellClick事件上填充datagridview3。当我点击dayagridview2 cellClick_event时,我的datagridview3被这个方法填充:

 private void dataGridView2_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        DataD d = new DataD();
        d.Mat(dataGridView1,dataGridView2,dataGridView3);
    }

这里是填充dataGridView3的方法:

   public void Mat(DataGridView dataGridView1, DataGridView dataGridView2,DataGridView dataGridView3)
    {
        Named n = new Named();
        foreach (DataGridViewCell cell in dataGridView2.SelectedCells)
        {
            IList<String> lista = new List<String>();
            n.Data = string.Empty;
            n.Data2 = string.Empty;
            int indexOfYourColumn = 9;
            int index2 = 0;
            var restaurantList = new List<Named>();
            foreach (DataGridViewRow row in dataGridView1.Rows)
            {
                n.Data = row.Cells[indexOfYourColumn].Value.ToString();
                if (cell.Value.ToString() == n.Data.ToString())
                {
                    restaurantList.Add(new Nalozi()
                    {
                        Data = row.Cells[indexOfYourColumn].Value.ToString(),
                        Data2 = row.Cells[index2].Value.ToString()
                    });

                }
            }

            dataGridView3.DataSource = restaurantList;
        }

    }

所以现在我只需要在buttnClick上以另一种形式显示这个dataGridView3

将datagridview从一种形式传递到另一种形式

如果您想将DataGridView从一个表单传递到另一个表单,则可能必须将DataGridViewDataGridView.DataSource从一个表单传递到另一个表单。像这样的

new SecondForm(dataGridView.DataSource)

和您的SecondForm将接受传递的DataSource并将其传递给该形式的DataGridView

class SecondForm
{
    public SecondForm(object dataSource)
    {
        InitializeComponents();
        dataGridView.DataSource = dataSource;
    }
}

如果你想传递DataSource的副本,你可以从FirstFormDataGridView的现有数据中创建一个新的DataTable

private DataTable GetDataTableFromDGV(DataGridView dgv)
{
    var dt = new DataTable();
    foreach (DataGridViewColumn column in dgv.Columns)
    {
        if (column.Visible)
        {
            // You could potentially name the column based on the DGV column name (beware of dupes)
            // or assign a type based on the data type of the data bound to this DGV column.
            dt.Columns.Add();
        }
    }
    object[] cellValues = new object[dgv.Columns.Count];
    foreach (DataGridViewRow row in dgv.Rows)
    {
        for (int i = 0; i < row.Cells.Count; i++)
        {
            cellValues[i] = row.Cells[i].Value;
        }
        dt.Rows.Add(cellValues);
    }
    return dt;
}

和update第一次调用this

new SecondForm(GetDataTableFromDGV(dataGridView))