0

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

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

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

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

在类库项目中,methodx 是这样定义的:

public void methodX(string[] gridviewRowData)
{

}

您能否建议我在这里使用正确的数据类型。

4

3 回答 3

1

由于您正在通过gridview.Rows[i],您正在寻找的方法签名是:

public void methodX(DataGridView dataGridView) {

}

这意味着您将DataGridView索引处的行传递i给方法

于 2013-11-01T19:20:41.230 回答
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。

于 2013-11-02T16:17:07.000 回答
0

您可以使用 DataGridViewRowCollection ( http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewrowcollection(v=vs.110).aspx )。它是一个处理数据网格视图中的行的集合。

之后,您可以通过 rows["columnName"].value; 访问每个单元格信息。这是一个简短的例子:

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"] + "...");


        }
    }
于 2013-11-01T19:36:42.530 回答