我在Winforms项目中有一个网格视图,我想将网格的每一行传递给另一个类库项目中的methodX()
。
我的问题是要传递给methodX()
的行的数据类型是什么?
我试图从我的Winforms项目中传递它:
obj.methodX(gridview.Rows[i]);
在类库项目中,methodx定义如下:
public void methodX(string[] gridviewRowData)
{
}
你能否告诉我我在这里使用的正确数据类型。
答案 0 :(得分:1)
由于您要传递gridview.Rows[i]
,因此您要查找的方法签名是:
public void methodX(DataGridView dataGridView) {
}
这意味着您将索引DataGridView
的{{1}}行传递给方法
答案 1 :(得分:0)
您可以使用DataGridViewRowCollection(http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrowcollection(v=vs.110).aspx)。 它是一个处理数据网格视图中行的集合。
之后,您可以按行[“columnName”]访问每个单元格信息。 这是一个简短的例子:
private void Form1_Load(object sender, EventArgs e)
{
//get the rows from the datagridview
DataGridViewRowCollection rows = new DataGridViewRowCollection(dataGridView1);
//and now call your method
GetRowsInfo(rows);
}
//method that takes an argument of DataGridViewRowCollection type, iterates through all the rows and displays every cell content(generically speaking).
public void GetRowsInfo(DataGridViewRowCollection dataRows)
{
foreach(DataRow row in dataRows)
{
Console.WriteLine(row["columnName"] + row["columnName"] + "...");
}
}
答案 2 :(得分:0)
当您传递单行时,您正在使用此行:
obj.methodX(gridview.Rows[i]);
然后你的methodX需要看起来像这样:
public void methodX(DataGridViewRow row)
{
}
或者,按照@lauCosma
的建议使用DataGridViewRowCollection或者您也可以将整个DataGridView传递给methodX,然后循环遍历methodX中的每一行:
obj.methodX(gridview);
public void methodX(DataGridView gridview)
{
foreach DataGridViewRow row in gridview.Rows)
{
//your code here
}
}
或者您也可以使用DataGridView.SelectedRows属性将突出显示/选定的行集合传递给methodX。