一尘不染

Datagridview:如何在编辑模式下设置单元格?

c#

我需要以编程方式在编辑模式下设置单元格。我知道将那个单元格设置为CurrentCell然后调用方法BeginEdit(bool),它应该发生,但就我而言,事实并非如此。

我真的很想用带有几列的DGV,用户只能选择并编辑前两列。其他列已经是只读的,但是用户可以选择它们,而这正是我所不想要的。

所以我在想,告诉用户每次在单元格上完成写完时TAB,然后选择第二个单元格,然后再次选择并选择并开始编辑下一行的第一个单元格…

我怎样才能做到这一点?


阅读 500

收藏
2020-05-19

共1个答案

一尘不染

设置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);               
        }
    }

如果您以前没有找到它,DataGridView
FAQ
是一个很棒的资源,由程序经理为DataGridView控件编写,其中涵盖了您可能想使用该控件做的大部分事情。

2020-05-19