3

私はデータグリッドビューを持つフォームを持っており、ユーザーが最初の行の最初のセルに値を入力し始めると、その値を送信する f2 を押すこともできますが、ユーザーがタブを押して別のセルに移動しない限り、セルの値にアクセスできません

以下は、f2がヒットしたときにセル値にアクセスするための私のコードです

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        var key = new KeyEventArgs(keyData);

        ShortcutKey(this, key);

        return base.ProcessCmdKey(ref msg, keyData);
    }


    protected virtual void ShortcutKey(object sender, KeyEventArgs key)
    {
        switch (key.KeyCode)
        {
            case Keys.F2:
                MessageBox.Show(dataGridView1.SelectedCells[0].Value.ToString());
                break;
        }
    }

dataGridView1.SelectedCells[0].Value は null を返します

4

4 に答える 4

2

@BFree あなたのコードが私にインスピレーションを与えてくれたことに感謝します ;) this.dataGridView1.EndEdit(); を呼び出すだけではないのはなぜですか。前 MessageBox.Show(dataGridView1.SelectedCells[0].Value.ToString());

このコードは問題なく動作します:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
        var key = new KeyEventArgs(keyData);

        ShortcutKey(this, key);

        return base.ProcessCmdKey(ref msg, keyData);
    }


    protected virtual void ShortcutKey(object sender, KeyEventArgs key)
    {
        switch (key.KeyCode)
        {
            case Keys.F2:
dataGridView1.EndEdit();
                MessageBox.Show(dataGridView1.SelectedCells[0].Value.ToString());
                break;
        }
    }
于 2009-05-18T13:23:29.687 に答える
1

これを試すことができます

string str = dataGridView.CurrentCell.GetEditedFormattedValue
             (dataGridView.CurrentCell.RowIndex, DataGridViewDataErrorContexts.Display)
             .ToString();
于 2014-09-22T17:06:16.697 に答える
0

OnKeyDown次のハンドラーがありDataGridViewCellます。

http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridviewcell.onkeydown.aspx

ただし、唯一の問題はDataGridViewTextBoxCell、目的の機能を得るために、に基づいて独自のカスタム セルを作成する必要があることです。このハンドラーに対して公開されるイベントがないためです。

于 2009-05-18T12:55:57.230 に答える