我想在某些事件之后选择先前选择的行,我的代码如下。
int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;
执行代码后,预览将如下所示。但我需要>
在 id = 1272741 (蓝色选择)中而不是在 1272737 中获取符号
我想在某些事件之后选择先前选择的行,我的代码如下。
int currentRow = dgvIcbSubsInfo.CurrentCell.RowIndex;
//code to execute
dgvIcbSubsInfo.Rows[currentRow].Selected = true;
执行代码后,预览将如下所示。但我需要>
在 id = 1272741 (蓝色选择)中而不是在 1272737 中获取符号
您可能已经看过DataGridView.CurrentRow 属性,它是一个只读属性:
获取包含当前单元格的行。
但在备注部分,写着:
要更改当前行,您必须将
CurrentCell
属性设置为所需行中的单元格。
此外,从DataGridView.CurrentCell 属性中,我们发现:
当您更改此属性的值时,SelectionChanged 事件会在 CurrentCellChanged 事件之前发生。此时访问 CurrentCell 属性的任何 SelectionChanged 事件处理程序都将获得其先前的值。
因此,您无需实际选择currentRow
它,因为在您设置值时会选择它CurrentCell
(除非您有一些代码要在SelectionChanged
和CurrentCellChanged
事件之间的当前范围内执行)。试试这个:
//dgvIcbSubsInfo.Rows[currentRow].Selected = true;
dgvIcbSubsInfo.CurrentCell = dgvIcbSubsInfo.Rows[currentRow].Cells[0];
我认为您希望突出显示该行。请尝试以下代码,我认为它可能会有所帮助:
Color color = dgv.Rows[prevRowIndex].DefaultCellStyle.SelectionBackColor;
dgv.Rows[curRowIndex].DefaultCellStyle.SelectionBackColor = color;
尝试以下更改当前行。由于 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];
}
我来到这里想学习如何以编程方式选择 DataGridView 控件中的行。以下是如何在名为 dg1 的 DataGridView 控件中选择顶行并“单击”它:
dg1.Rows[0].Selected = true;
dg1_RowHeaderMouseClick(null, null);
然后这会调用以下事件,该事件需要一个选定的行。
private void dg1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
var selectedRows = dg1.SelectedRows;
// Make sure we have a single row selected
int count = selectedRows.Count;
if (count == 1)
{
tbAssemblyName.Text = dg1.SelectedRows[0].Cells[0].Value.ToString();
}
}
当用户单击他们想要的行时,我一切正常。当只有一条记录可供选择时,我想为用户“单击”它。