我需要C#中的代码段代码,以便在双击该行后从DataGridView
中选择行。
现在我正在显示数据集中的数据,选择模式为FullRowSelect
。
有什么方法可以设置吗?
有两种情况需要处理:
感谢您的帮助!
新手程序员
答案 0 :(得分:1)
您必须在函数timer_tick
private void timer3_Tick(object sender, EventArgs e)
{
int rowIndex;
if (dgvOrdini.Rows.Count == 0) //here I check if the dgv is empty
rowIndex = 0;
else
// I save the index of the current row in rowIndex
rowIndex = this.dgvOrdini.CurrentCell.RowIndex;
.......
.......
if (dgvOrdini.Rows.Count != 0) //Now if the dgv is not empty
//I set my rowIndex
dgvOrdini.CurrentCell = dgvOrdini.Rows[rowIndex].Cells[0];
}
使用此方法,所选行不会更改。
答案 1 :(得分:1)
试试这个。 首先保存实际选择的行的索引
int index = -1 //set the index to negative (because if you have only 1 row in your grid, this is a zero index
if (yourdatagridview.Rows.Count > 0) //if you have rows in datagrid
{
index = yourdatagridview.SelectedRows[0].Index; //then save index into variable
}
现在您可以更新datagridview ...
更新后,您必须设置选择的行:
if (index != -1) //if index == -1 then you don't have rows in your datagrid
{
yourdatagridview.Rows[index].Selected = true;
}
这是有效的!
答案 2 :(得分:0)
现在我正在显示数据集中的数据,选择模式为
FullRowSelect
。有什么方法可以设置吗?
DataGridView.SelectionMode
属性将通过DataGridViewSelectionMode
枚举为您执行此操作。
dataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
至于你提出的其他问题,我认为还需要进一步的细节。你之后有什么样的行为?
编辑#1
根据你的评论:
在我连续点击后,会打开一个新表单。问题是,每次启用计时器时,都会调用populate_DatagridView方法,并且所选行位于第一行,而不是选中单击的行。
一种解决方案可能如下:
private _dataGridViewRowSelectedIndex;
private void dataGridview1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) {
DataGridView dgv = (DataGridview)sender;
if (dgv.Rows.GetRowState(e.RowIndex) == DataGridViewElementStates.Selected)
_dataGridViewRowSelectedIndex = e.RowIndex;
// Open your form here...
// And when your form returns...
// Set the selected index like so
dgv.Rows[_dataGridViewRowSelectedIndex].Selected = true;
}
这会帮助你吗?