如何在C#中同时将datagridview的多个单元格值从一个表单传递到另一个表单?

时间:2016-03-14 12:28:18

标签: c# winforms

我是c#的新手,我使用的是Windows窗体。 我有Form1 datagridviewForm2,上面有地图。

我想同时将未知号码(无限数量)的datagridview小区值从Form1传递到form2,这是因为我想显示所选的小区值(地址) )form1到地图上的form2。 我知道如何使用setter和getter但在这种情况下我认为setter和getter不起作用,因为我想传递给form2的单元格值的数量是未知的。

任何人都知道如何同时将多个datagridview单元格值从form1传递到form2?请帮忙,谢谢

Form1中的代码循环遍历所有选定的行,我想传递 Cells[0].Valueform2

 foreach (DataGridViewRow row in DGV.SelectedRows)
 {
    // here I have to pass all selected row.Cells[0].Value to form2         
 }

3 个答案:

答案 0 :(得分:2)

制作一个字符串列表并将其传递到下一个表格

List<string> cellvalueList = new List<string>();

foreach (DataGridViewRow row in DGV.SelectedRows)
{
    // here I have to pass all selected row.Cells[0].Value to form2  
    cellvalueList.Add(row.Cells[0].Value);   
}

现在,当您调用下一个表单时,您需要一个在那里接受List的属性(或通过构造函数传递)。像这样......

Form2 newForm = new Form();
newform.Values = cellvalueList; // this Values is the List<string> property in Form2
newForm.Show();

如果您的form2已经可见,那么您可以传递完整的List

newform.SetValues(cellvalueList); 

这个SetValues是Form2中的函数,它将List of string作为参数

答案 1 :(得分:1)

这是我的解决方案:

 List<string> values = new List<string>();
 foreach (DataGridViewRow row in DGV.SelectedRows)
 {
    values.Add(row.Cells[0].Value);         
 }
 myForm2.SetForm1Values(values);

这里有一些注意事项,第一个是您必须能够获得对其他表单实例的引用(此处表示为myForm2)。我在这里使用了一个名为SetForm1Values的方法,因为你表明你不确定一个属性是否可行,但实际上属性设置器和这个方法一样有效。

答案 2 :(得分:1)

您可以使用以下代码获取所选行的Cells[0]值:

List<string> selectedData = this.dataGridView1.SelectedRows.Cast<DataGridViewRow>()
                                .Select(row => (string)row.Cells[0].Value)
                                .ToList();

它相当于:

List<string> selectedData = new List<string>();
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows)
{
    selectedData.Add((string)row.Cells[0].Value);
}