C# DataGridView控件选中行获取其值

本文详细介绍了DataGridView控件的基本操作,包括如何获取指定单元格的值、选中行数、当前选中行索引及选中单元格的值。此外,还提供了获取选中行数据和特定列数据的方法。

DataGridView的几个基本操作:
1、获得某个(指定的)单元格的值:
dataGridView1.Row[i].Cells[j].Value;
2、获得选中的总行数:
dataGridView1.SelectedRows.Count;
3、获得当前选中行的索引:
dataGridView1.CurrentRow.Index;
4、获得当前选中单元格的值:
dataGridView1.CurrentCell.Value;
5、取选中行的数据
string[] str = new string[dataGridView.Rows.Count];
for(int i;i<dataGridView1.Rows.Count;i++)
{
if(dataGridView1.Rows[i].Selected == true)
{
str[i] = dataGridView1.Rows[i].Cells[1].Value.ToString();
}
}
7、获取选中行的某个数据
int a = dataGridView1.SelectedRows.Index;
dataGridView1.Rows[a].Cells[“你想要的某一列的索引,想要几就写几”].Value;

获得某个(指定的)单元格的值: dataGridView1.Row[i].Cells[j].Value; Row[i] 应该是Rows[i]

int a=dataGridView1.CurrentRow.Index;
string str=dataGridView1.Row[a].Cells[“strName”].Value.Tostring();

selectedRows[0]当前选中的行
.cell[列索引].values 就是当前选中行的某个单元格的值

DataGridView1.SelectedCells(0).Value.ToString 取当前选择单元内容
DataGridView1.Rows(e.RowIndex).Cells(2).Value.ToString 当前选择单元第N列内容

<think>嗯,用户的问题是关于如何在C#获取DataGridView控件当前选中号。首先,我需要回忆一下DataGridView的相关属性和方法。记得DataGridView有一个SelectedRows属性,可能可以用来获取选中。但用户需要的是号,也就是的索引。 那SelectedRows集合中的每个对象应该有一个Index属性,对吧?比如,如果用户选中了某一,可以通过SelectedRows[0].Index来获取号。不过,需要考虑多选的情况,用户是否需要处理多个选中,还是只取第一个。可能需要提醒用户注意这种情况。 另外,用户的问题中提到引用了三个参考资料。引用[3]提到使用SelectedCells来获取,但用户需要的是号,所以可能需要用SelectedRows。另外,引用[1]提到在RowsRemoved事件中,如果数为0时可能会有问题,所以在获取号时需要注意控件是否有存在,避免空引用异常。 还有,可能用户有时候会误操作,比如没有选中任何,这时候直接访问SelectedRows[0]会导致异常。所以,在代码中应该先检查SelectedRows.Count是否大于0,或者CurrentRow是否不为null。例如,使用CurrentCell属性来获取当前选中的单元格,然后通过其RowIndex属性得到号。这种方法可能更直接,尤其是在单选的情况下。 另外,DataGridView的SelectionMode属性可能会影响如何获取选中。比如,如果设置为FullRowSelect,那么选中整个,这时候SelectedRows会有数据。但如果是CellSelect模式,可能需要通过SelectedCells来获取号。 总结下来,步骤应该是:1. 检查是否有选中;2. 获取第一个选中的Index属性,或者CurrentRow的Index。此外,要注意事件触发的时机,比如在数据加载时可能触发RowsRemoved事件,这时候需要处理Rows.Count为0的情况,避免错误。 然后,用户可能需要不同的方法,比如处理多选或单选的情况,所以回答中应该覆盖这两种情况,并提供示例代码。同时,提醒异常处理,比如使用条件判断来避免空引用。 最后,生成相关问题的时候,可以围绕DataGridView的其他常见操作,比如获取列号、处理选择模式、处理多选等。</think>在C#获取DataGridView控件当前选中号可通过以下方法实现: ### 方法一:通过`SelectedRows`集合 ```csharp if (dataGridView1.SelectedRows.Count > 0) { int rowIndex = dataGridView1.SelectedRows[0].Index; // 处理号 } ``` 此方法适用于`SelectionMode`设置为`FullRowSelect`或`RowHeaderSelect`模式,可直接获取选中的索引[^3]。 ### 方法二:通过`CurrentRow`属性 ```csharp if (dataGridView1.CurrentRow != null) { int rowIndex = dataGridView1.CurrentRow.Index; // 处理号 } ``` 此方法适用于单选操作,即使未启用整选择模式也能获取当前焦点的索引[^2]。 ### 方法三:通过`CurrentCell`定位 ```csharp if (dataGridView1.CurrentCell != null) { int rowIndex = dataGridView1.CurrentCell.RowIndex; // 处理号 } ``` 此方法通过当前选中单元格定位号,适用于单元格选择模式。 ### 注意事项 1. 需先判断选中状态避免空引用异常 2. 在数据绑定或动态更新时,注意事件触发的时序问题(如RowsRemoved事件中可能出现Rows.Count为0的情况)[^1] 3. 多选场景需遍历`SelectedRows`集合: ```csharp foreach (DataGridViewRow row in dataGridView1.SelectedRows) { int index = row.Index; } ```
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值