jos*_*esp 28 c# datagridview .net-3.5 winforms
我需要以编程方式以编辑方式设置单元格.我知道将该单元格设置为CurrentCell然后调用方法BeginEdit(bool),它应该发生,但在我的情况下,它不会.
我真的很想要,我的DGV有几个列,用户只能选择并编辑前两个.其他列已经是只读的,但用户可以选择它们,这就是我不想要的.
所以我在想,每当它完成在单元格上写入时告诉用户TAB,然后选择第二个单元格,然后再次选项卡并选择并开始编辑下一行的第一个单元格......
我怎样才能做到这一点?
Dav*_*all 67
设置CurrentCell然后调用BeginEdit(true)对我来说很有效.
以下代码显示了KeyDown将单元格设置为可编辑的事件的eventHandler .
我的例子只实现了一个必要的按键覆盖,但理论上其他的应该是相同的.(我总是将[0] [0]单元设置为可编辑,但任何其他单元应该可以工作)
private void dataGridView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Tab && dataGridView1.CurrentCell.ColumnIndex == 1)
{
e.Handled = true;
DataGridViewCell cell = dataGridView1.Rows[0].Cells[0];
dataGridView1.CurrentCell = cell;
dataGridView1.BeginEdit(true);
}
}
Run Code Online (Sandbox Code Playgroud)
如果您以前没有找到它,DataGridView FAQ是一个很好的资源,由DataGridView控件的程序管理器编写,它涵盖了您可能想要对控件执行的大部分操作.
小智 5
好吧,我会检查您的任何列是否设置为ReadOnly. 我从来没有使用过 BeginEdit,但也许有一些合法的用途。完成后dataGridView1.Columns[".."].ReadOnly = False;,未完成的字段ReadOnly应该是可编辑的。您可以使用 DataGridView事件来确定输入的CellEnter单元格,然后在将前两列的编辑传递到下一组列后打开对这些单元格的编辑,并关闭对最后两列的编辑。
小智 5
private void DgvRoomInformation_CellEnter(object sender, DataGridViewCellEventArgs e)
{
if (DgvRoomInformation.CurrentCell.ColumnIndex == 4) //example-'Column index=4'
{
DgvRoomInformation.BeginEdit(true);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
181378 次 |
| 最近记录: |