1

我将表单的 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);
}

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

“如果”失败了,它下降到“返回基础”。线。

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

注意:这是我在这里提出的一个问题的变体:如何以编程方式从 datagridview 中的一个单元格移动到另一个单元格?

4

1 回答 1

1

现在,您正在测试该框中的值的文本表示是否正好是一个字符的长度。

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

于 2012-09-04T15:36:05.663 回答