DataGridView: 'メソッドグループからキーに変換できません

私はdatagridviewとWinFormAppを持っていると私はあなたが選択した行にEnterキーを押したときに何かをするメソッドを書くことを試みています。 例えば ​​- gridviewは私のデータベースからのデータを表示し、それは4つの列を持っています、あなたが好きなようにそれらの列を編集し終わった後、あなたはEnterを押すとデータは新しい値でデータベースに保存されます。 現在私は私の Form1()にこれを持っています

     dataGridView1.PreviewKeyDown += new PreviewKeyDownEventArgs(dataGridView1_PreviewKeyDown);

私はそれが正しいとは思わない、そして方法はこれである:

void dataGridView1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
    {
        if (e.KeyCode == Keys.Enter)
        {
           //do something
        }
    }

私はプログラミングにかなり慣れていないので、良い説明は本当に感謝されるでしょう。

ありがとうございました!

0

6 答え

ここで、dgvはDatawGridViewのオブジェクトです。このイベントはユーザーが操作したときにのみ発生します。 セルの内容を変更します。つまり、値 'abc'のセルとユーザーが同じセル内で 'abc'を再入力した場合、このイベントは発生しません。同様に、編集後にユーザーがキーボードの 'Escape'キーを押した場合も、このイベントは発生しません。編集後、ユーザーがキーボードの[Enter/Return]キーを押すと、新旧の値が同じでなければこのイベントが発生します。

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    //code to save your changed data
}
0
追加された

ここで、dgvはDatawGridViewのオブジェクトです。このイベントはユーザーが操作したときにのみ発生します。 セルの内容を変更します。つまり、値 'abc'のセルとユーザーが同じセル内で 'abc'を再入力した場合、このイベントは発生しません。同様に、編集後にユーザーがキーボードの 'Escape'キーを押した場合も、このイベントは発生しません。編集後、ユーザーがキーボードの[Enter/Return]キーを押すと、新旧の値が同じでなければこのイベントが発生します。

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    //code to save your changed data
}
0
追加された

ここで、dgvはDatawGridViewのオブジェクトです。このイベントはユーザーが操作したときにのみ発生します。 セルの内容を変更します。つまり、値 'abc'のセルとユーザーが同じセル内で 'abc'を再入力した場合、このイベントは発生しません。同様に、編集後にユーザーがキーボードの 'Escape'キーを押した場合も、このイベントは発生しません。編集後、ユーザーがキーボードの[Enter/Return]キーを押すと、新旧の値が同じでなければこのイベントが発生します。

private void dgv_CellValueChanged(object sender, DataGridViewCellEventArgs e)
{
    //code to save your changed data
}
0
追加された

CellValueChangedイベントを使ってみましたか?データベースを更新するコードがある場合は、自動的に更新されるはずです。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show("Test if works"); //it works
    }

編集 -

代わりに、選択した行/列でEnterキーが押されたときにコマンドを実行するだけの場合は、

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == 1)
           {
               MessageBox.Show("Test if works"); //it works
           }
    }
0
追加された

CellValueChangedイベントを使ってみましたか?データベースを更新するコードがある場合は、自動的に更新されるはずです。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show("Test if works"); //it works
    }

編集 -

代わりに、選択した行/列でEnterキーが押されたときにコマンドを実行するだけの場合は、

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == 1)
           {
               MessageBox.Show("Test if works"); //it works
           }
    }
0
追加された

CellValueChangedイベントを使ってみましたか?データベースを更新するコードがある場合は、自動的に更新されるはずです。

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        MessageBox.Show("Test if works"); //it works
    }

編集 -

代わりに、選択した行/列でEnterキーが押されたときにコマンドを実行するだけの場合は、

private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
    {
        if(e.ColumnIndex == 1)
           {
               MessageBox.Show("Test if works"); //it works
           }
    }
0
追加された