我无法理解这里发生了什么:
void FindRecord(string pRecordID){
dgv_cusData.ClearSelection();
for(int i=0;i < dgv_cusData.Rows.Count;i++){
if (dgv_cusData.Rows[i].Cells["recordid"].Value.ToString()==pRecordID){
dgv_cusData.CurrentCell = dgv_cusData.Rows[i].Cells[1];
dgv_cusData.Rows[i].Selected = true;
}
}
}
pRecordID是DGV中的唯一列。我只在网格中有三条记录,我知道所选记录位于第2位;然而,SelectionChanged事件会触发:
void Dgv_cusDataSelectionChanged(object sender, EventArgs e)
{
MessageBox.Show(dgv_cusData.CurrentCell.RowIndex.ToString()); // <---- Returns 0;
lbl_DetailsLabel.Text = "Details For "+dgv_cusData.CurrentRow.Cells[1].Value;
}
CurrentCell.RowIndex始终返回0.我在尝试选择DGV中的当前行时是否遗漏了某些内容?任何帮助,将不胜感激。干杯!
答案 0 :(得分:1)
我想知道选择行是否会导致您丢失CurrentCell。
该行是否在datagridview中突出显示?
您是否允许在网格上进行多行选择。如果不是,我认为你会得到更好的结果:
MessageBox.Show(dgv_cusData.SelectedRows[0].Index.ToString());
和
lbl_DetailsLabel.Text = "Details For "+ dgv_cusData.Rows(dgv_cusData.SelectedRows(0).Index).Cells[1].Value;