我是c#的新手,我使用的是Windows窗体。
我有Form1
datagridview
和Form2
,上面有地图。
我想同时将未知号码(无限数量)的datagridview
小区值从Form1
传递到form2
,这是因为我想显示所选的小区值(地址) )form1
到地图上的form2
。
我知道如何使用setter和getter但在这种情况下我认为setter和getter不起作用,因为我想传递给form2
的单元格值的数量是未知的。
任何人都知道如何同时将多个datagridview
单元格值从form1
传递到form2
?请帮忙,谢谢
Form1中的代码循环遍历所有选定的行,我想传递
Cells[0].Value
到form2
:
foreach (DataGridViewRow row in DGV.SelectedRows)
{
// here I have to pass all selected row.Cells[0].Value to form2
}
答案 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);
}