在winform项目中,ShowDialog出某个窗体,在这个窗体中第一行第二列的单无格默认获得焦点,如何实现
this.dataGridView1.CurrentCell = this.dataGridView1.Rows[4].Cells[1]; //自己改成第几行第几列。
this.dataGridView1.BeginEdit(true);
不行,这个方法我式过
@ssh800: dataGridView1.Rows[0].Cells[1].Selected = true;
自己再试试, 我也忘了。
@问天何必: 这些方法都试过了,不行
貌似dataGridView.CurrentCell设置太早了不起作用,可能它自己内部函数运行时给覆盖了,所有在设置current cell时要足够晚。我采取的解决方法是在CellFormatting 事件的回调中设置,验证可行。
代码:
1.首先要订阅事件,代码要放在给dataGridView.DataSource赋值之前
1 this.dataGridView.CellFormatting += (sender, e) => OnCellFormatting(e);
2.实现选中效果,需要添加一个flag,或者会影响正常的编辑
1 private bool m_HasGridInitialized =false; 2 3 private void OnCellFormatting(DataGridViewCellFormattingEventArgs e) 4 { 5 if (!m_HasGridInitialized && e.RowIndex == 0 && e.ColumnIndex == 1) 6 { 7 dataGridView.CurrentCell = dataGridView[e.ColumnIndex, e.RowIndex]; 8 m_HasGridInitialized = true; 9 } 10 }
感谢 leowork的回答,帮助我解决了问题