任何人都可以帮忙..?
我真的需要帮助,这里有两种形式[form1&form2] . 我在每个表单中创建了datagridview(DGV) . 现在我需要通过单击form2上的一个按钮将值从form2 datagridview传输/复制到form1 datagridview .
在form2我写了这个..!
private void button1_Click(object sender, EventArgs e)
{
try
{
if (dataGridView1.RowCount != 0)
{
foreach (DataGridViewRow row in dataGridView1.SelectedRows)
{
object[] items = new object[row.Cells.Count];
for (int i = 0; i < row.Cells.Count; i++)
items[i] = row.Cells[i].Value;
Form1 F1 = new Form1();
F1.Activate();
F1.dataGridView1.Rows.Add(items);
F1.dataGridView1.DataSource = items;
dataGridView1.Rows.Remove(row);
}
}
else
{
MessageBox.Show("There is no data to export, please verify..!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
catch { }
}
我得到的错误就像“...... dataGridView1.Form1由于其保护级别而无法访问” . 是否有任何其他方法或方法可以将值从form2 datagridview导入到form1 datagridview ..?
有任何想法吗...?
提前致谢 .
4 回答
将Form1的DGV声明为Public而不是private,并在Form2中执行以下操作:
System.Windows.Forms.Form f = System.Windows.Forms.Application.OpenForms["Form1"];
.您可以简单地声明
dataset/datatable
将form1
grid
绑定为公共,并在form2
中访问它 . 通过datatable or dataset
,您可以再次绑定form2上的网格 .或者您可以将数据集或数据表从form1发送到form2(可能通过模块化函数),然后绑定网格 .
这是最简单的方法 .
为此目的,你应该使用某种
event
:NOTE :我在 is not complete 上面发布的代码,应该添加一些您自己的成员或代码 . 您还应该考虑使用
DataSource
作为您的网格,这就是我们在实际项目中处理DataGridView
的方式 .在表单2中声明一个公共
BindingList<row_object>
并从表单1中写入 . 如果表单1中的datagridview绑定到bindingList,则数据将自动刷新 . 请参阅this以查看如何将datagridview绑定到bindingList .