Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c中将form1中的数据网格视图的内容复制到form2中的另一个数据网格视图_C#_Winforms_Datagridview_Copy Paste - Fatal编程技术网

C# 如何在c中将form1中的数据网格视图的内容复制到form2中的另一个数据网格视图

C# 如何在c中将form1中的数据网格视图的内容复制到form2中的另一个数据网格视图,c#,winforms,datagridview,copy-paste,C#,Winforms,Datagridview,Copy Paste,我有两张赢的表格。在表格1中,我有一个dataGridView,我将在其中收集所有数据。 现在我想做的是,当我在表单1中按下一个按钮时,我想显示表单2,表单1数据网格视图中的所有行都需要复制到表单2中的数据网格视图中 我该怎么做 如果不可能,是否可以将form1中的数据网格视图设置为浮动控件,可以在UI上自由移动 我可以使用下面的代码以相同的形式从一个dataGridView复制到另一个dataGridView private DataGridView CopyDataGridView(Data

我有两张赢的表格。在表格1中,我有一个dataGridView,我将在其中收集所有数据。 现在我想做的是,当我在表单1中按下一个按钮时,我想显示表单2,表单1数据网格视图中的所有行都需要复制到表单2中的数据网格视图中

我该怎么做

如果不可能,是否可以将form1中的数据网格视图设置为浮动控件,可以在UI上自由移动

我可以使用下面的代码以相同的形式从一个dataGridView复制到另一个dataGridView

private DataGridView CopyDataGridView(DataGridView dgv_org)
    {
        try
        {
            if (dataGridView2.Columns.Count == 0)
            {
                foreach (DataGridViewColumn dgvc in dgv_org.Columns)
                {
                    dataGridView2.Columns.Add(dgvc.Clone() as DataGridViewColumn);
                }
            }
            DataGridViewRow row = new DataGridViewRow();
            int k = 2;
            if (first == false)
            {
                k=0;
                first = true;
            }
                for (int i = k; i < dgv_org.Rows.Count; i++)
                {
                    row = (DataGridViewRow)dgv_org.Rows[i].Clone();
                    int intColIndex = 0;
                    foreach (DataGridViewCell cell in dgv_org.Rows[i].Cells)
                    {
                        row.Cells[intColIndex].Value = cell.Value;
                        intColIndex++;
                    }
                    dataGridView2.Rows.Add(row);
                }
                dataGridView2.AllowUserToAddRows = false;
                dataGridView2.Refresh();                
        }
        catch (Exception ex)
        {
            MessageBox.Show("Copy DataGridViw Error");
        }
        return dataGridView2;
    } 

但是不能复制到form2。

也许你现在不需要这个,但希望它能在将来帮助其他人

private void CopyAll(DataGridView from, DataGridView to)
{
    if (to.Columns.Count == 0)
    {
        foreach (DataGridViewColumn dgvc in from.Columns)
        {
            to.Columns.Add(dgvc.Name, dgvc.HeaderText);
        }
    }

    to.Rows.Clear();

    foreach(DataGridViewRow dgvr in from.Rows)
    {
        List<string> cells = new List<string>();

        foreach(DataGridViewCell dgvc in dgvr.Cells)
        {
            cells.Add(dgvc.Value.ToString());
        }

        to.Rows.Add(cells.ToArray());
    }
}
 // Retrieve data from database in form1
 conn.Open();
 SqlDataAdapter sda = new SqlDataAdapter("Select Image,Name from Input where ID = '" + txt_LID.Text + "'",conn);
 DataTable dt = new DataTable();
 sda.Fill(dt);
 dGV_form1.DataSource = dt; 

 // Button Code on form1          
 Form2 lcp = new Form2();
 lcp.dGV_form2.DataSource = dt;
 lcp.Show();
 this.Hide();

为什么要复制,你可以通过引用

首先为源创建datatable

DataTable dt = new Datatable();
//Populate datatable
gridView.DataSource =dt;
点击按钮

Form2 f2 = new Form2(dt);
f2.Show();

Form2重载了构造函数。

form1上的DataGridView有什么样的数据源?实际上,我有一个连接的硬件,可以连续发送数据。在后台工作人员的帮助下,我直接将这些数据带到form1 DataGridView。在处理DataGridView时,最好使用一些数据源,手动添加行和列是可以的,但不是很好。OK。但现在我必须遵循这个方法。可以不使用数据源进行复制吗?当然,您的方法看起来不太好。
Form2 f2 = new Form2(dt);
f2.Show();