为什么我的事件处理程序只输入一次?

时间:2012-09-04 15:27:52

标签: c# winforms datagridview datagridviewtextboxcell

我将表单的KeyPreview设置为true。

如果DataGridView单元格已经有值,我正在尝试移动到下一个单元格。我有这个代码:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
    if (this.ActiveControl == dataGridViewPlatypus)
    {
        var currentCell = dataGridViewPlatypus.CurrentCell;
        if (currentCell.Value.ToString().Length == 1) 
        {
            ;//Now what?
            SendKeys.Send("{DOWN}");
        }
    }
    return base.ProcessCmdKey(ref msg, keyData);
}

在内部“if”上设置了断点,我第一次在单元格中输入一个值(大概是长度为0或长度为1,但在此时查看currentCell的值,它是“格式化文本“值==”“,我没有看到任何其他可能的属性来辨别单元格内容是什么。”

“if”失败,它落入“返回基础”。线。

当我在单元格中输入第二个值时(单元格中可见的内容从“2”变为“22”),我甚至都没有到达断点。为什么???

注意:这是我在此处提出的问题的变体:How can I programmatically move from one cell in a datagridview to another?

1 个答案:

答案 0 :(得分:1)

现在你正在测试该框中值的文本表示是否只有一个字符的长度。

如果我理解你的问题你应该尝试 currentCell.Value.ToString().Length > 0