将网格视图行传递给另一个类库中的方法

时间:2013-11-01 19:13:13

标签: c# winforms gridview

我在Winforms项目中有一个网格视图,我想将网格的每一行传递给另一个类库项目中的methodX()

我的问题是要传递给methodX()的行的数据类型是什么?

我试图从我的Winforms项目中传递它:

obj.methodX(gridview.Rows[i]);

在类库项目中,methodx定义如下:

public void methodX(string[] gridviewRowData)
{

}

你能否告诉我我在这里使用的正确数据类型。

3 个答案:

答案 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。