C#:从DataGridView中选择行
我有一个DataGridView(3列)和一个按钮的窗体。每次用户点击一个按钮时,我都希望获取存储在该行第一列中的值。C#:从DataGridView中选择行
这里是我的代码:
private void myButton_Click(object sender, EventArgs e)
{
foreach (DataGridViewRow row in ProductsGrid.Rows)
{
if (this.ProductsGrid.SelectedRows.Count == 1)
{
// get information of 1st column from the row
string value = this.ProductsGrid.SelectedRows[0].Cells[0].ToString();
}
}
}
然而,当我点击为myButton的this.ProductsGrid.SelectedRows.Count为0。另,我怎么确保用户只选择一个行不是多行? 此代码是否正确?
设置DataGridView.MultiSelect = false和DataGridView.SelectionMode = FullRowSelect。这将使得用户一次只能选择一行。
我不得不使用dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect; – mack 2013-07-08 20:49:41
如果选择整行(如果需要,可以在datagridview上打开RowSelect),SelectedRows仅返回行。更好的选择是SelectedCells
private void myButton_Click(object sender, EventArgs e)
{
var cell = this.ProductsGrid.SelectedCells[0];
var row = this.ProductsGrid.Rows[cell.RowIndex];
string value = row.Cells[0].Value.ToString();
}
去好了,你不需要两个遍历所有列在您的网格和访问SelectedRows的集合。如果跳过iteratating并使用SelectedRows集合,然后你的问题可能是一个不正确的SelectionMode:
SelectionMode属性必须设置 到FullRowSelect或RowHeaderSelect 为SelectedRows属性被 填入所选行。
(从MSDN)
SelectedRows.Count
返回当前选定整个的行数。您可能想要使用SelectedCells.Count
。
您可以参考类似数组电网:
ProductsGrid[ProductsGrid.SelectedColumns[0].Index, ProductsGrid.SelectedRows[0].Index].Value;
通过从SelectedRowsCollection和SelectedColumnsCollection如果同时选择多行,你会抓住的第一个值的第一指标选择指标。
您可以将用户锁定到通过设置在DataGridView的MultiSelect
属性选择只有一行。或者您做出CellClick
事件进行:
ProductsGrid.ClearSelection();
ProductsGrid.Rows[e.RowIndex].Selected = true;
,你也可以使用.BoundItem
你并不需要遍历(的foreach)在DataGrid的所有行只得到第一个SelectedRow。 foreach循环在这里浪费时间。 – 2010-04-29 22:11:30