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

内側の「if」にブレークポイントを設定すると、最初にセルに値を入力したときにそこに到達します(おそらく長さ0または長さ1ですが、その時点でcurrentCellの値を見ると、「フォーマットされたテキスト」です) value == "" であり、セルの内容を識別するための他の可能性のあるプロパティは表示されません)。

「もし」が失敗し、「帰還基地」に落下。ライン。

セルに 2 番目の値を入力すると (たとえば、セルに表示される値が "2" から "22" に変わります)、ブレークポイントに到達しません。どうして???

注: これは、私がここで尋ねた質問のバリエーションです: How can I move programmatically move from one cell in a datagridview?

4

1 に答える 1

1

現在、そのボックス内の値のテキスト表現の長さが正確に 1 文字であるかどうかをテストしています。

私があなたの質問を正しく理解しているなら、あなたは試してみるべきです currentCell.Value.ToString().Length > 0

于 2012-09-04T15:36:05.663 に答える