Data未在DataGridView Cell中显示

时间:2013-11-18 07:55:54

标签: c# visual-studio-2010

我在Microsoft Visual Studio 2010中有一个DataGridView,我希望在其中插入两个charachter,“I”和“O”。但是发射KeyPress后,重新发送的文本不会显示在Cell

可能是什么问题?

private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
    {              
        switch (treeView1.SelectedNode.Name)
        {
            case "PanelProperties":

                e.Control.KeyPress -= new KeyPressEventHandler(Control_KeyPress);
                e.Control.KeyPress += new KeyPressEventHandler(Control_KeyPress);
                break;
            default:
                break;
        }     
    }

    private void Control_KeyPress(object sender, KeyPressEventArgs e)
    {
        int columnIndex = dataGridView1.CurrentCell.ColumnIndex;
        switch (columnIndex)
        {
            case 5:
                if (!(e.KeyChar.Equals('i') || e.KeyChar.Equals('I')) && !(e.KeyChar.Equals('o') || e.KeyChar.Equals('O')))
                    e.Handled = true;
                else
                {
                    if (e.KeyChar.Equals('i') || e.KeyChar.Equals('I'))
                        dataGridView1.CurrentCell.Value = "In";
                    else
                        dataGridView1.CurrentCell.Value = "Out";
                }
                break;
            case 6:
            case 7:
                if (!(e.KeyChar.Equals('n') || e.KeyChar.Equals('N')) && !(e.KeyChar.Equals('y') || e.KeyChar.Equals('Y')))
                    e.Handled = true;
                else
                {
                    if (e.KeyChar.Equals('n') || e.KeyChar.Equals('N'))
                        dataGridView1.CurrentCell.Value = "No";
                    else
                        dataGridView1.CurrentCell.Value = "Yes";
                }
                break;
        }
    }    

2 个答案:

答案 0 :(得分:0)

只需将已编辑的更改提交到datagrid视图。

        if (dataGridView1.IsCurrentCellDirty)
        {
            dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
        }

答案 1 :(得分:0)

试试这个在我的示例应用程序中为我工作:

dataGridView1.CurrentCell.Value = "In";    
dataGridView1.EndEdit();