我希望在某些事件之后选择之前选定行的行,我的代码如下所示。
int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;
执行代码后,预览将如下所示。但是我需要在id = 1272741(蓝色选择)而不是在1272737中获得符号>
答案 0 :(得分:46)
可能您可能已经查看了DataGridView.CurrentRow Property,这是一个只读属性:
获取包含当前单元格的行。
但是在备注部分,有写道:
要更改当前行,必须将
CurrentCell
属性设置为a 所需行中的单元格。
另外,从DataGridView.CurrentCell Property我们发现:
更改此属性的值时,SelectionChanged事件 发生在CurrentCellChanged事件之前。任何SelectionChanged事件 此时访问CurrentCell属性的处理程序将获得它 以前的价值。
因此,您无需实际选择currentRow
,因为在设置CurrentCell
值时将会选择它(除非您在SelectionChanged
之间的当前范围内执行某些代码{1}}和CurrentCellChanged
个事件)。试试这个:
//dgvIcbSubsInfo.Rows[currentRow].Selected = true;
dgvIcbSubsInfo.CurrentCell = dgvIcbSubsInfo.Rows[currentRow].Cells[0];
答案 1 :(得分:0)
我想你想强调这一行。请尝试以下代码,我认为这可能会有所帮助:
Color color = dgv.Rows[prevRowIndex].DefaultCellStyle.SelectionBackColor;
dgv.Rows[curRowIndex].DefaultCellStyle.SelectionBackColor = color;
答案 2 :(得分:0)
请尝试以下操作更改当前行。由于OP不清楚应该将新行显示在哪一行,因此我的示例仅显示了从当前行移至上一行(如果有前一行)。第一行代码是可选的。如果您不想使用FullRowSelect,也可以将col硬编码为0(或其他列)以使用固定列。
dataGridView.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
int row = dataGridView.CurrentCell.RowIndex;
int firstRow = dataGridView.Rows.GetFirstRow(DataGridViewElementStates.None);
if (row != firstRow)
{
row--;
int col = dataGridView.CurrentCell.ColumnIndex;
dataGridView.CurrentCell = dataGridView[col, row];
}