0

私はdatagridviewを持っています。今私の要件は、使用者がセルを編集してEnterまたはTabキーをクリックすると、新しいセルの値がデータベースに更新され、新しい値をデータベースに更新できることです。 datagridviewのkeyupイベントの私のコードは、ユーザーがEnterキーを押したときのkeyupイベントで、コントロールが次の行に移動するため、行インデックス値をactualrowindex + 1として取得し、タブキーをクリックすると、コントロールは次の列を移動しているので、列インデックスを columnindex+1 として取得します。これらのイベントを処理するにはどうすればよいですか? enetr またはタブ キーをクリックしたときに正確な列インデックスまたは行インデックスを取得できますか?..以下は、私が書いたイベントです。私のコード..

    private void dataGridView1_KeyUp(object sender, KeyEventArgs e)
    {


    }
4

1 に答える 1

2

ユーザーがセルの値の変更をコミットする方法が他にもたくさんある場合に、Enter キーと Tab キーを処理しても意味がありません。たとえば、別のセルをクリックできます。おそらく、特定のキーを押したときだけでなく、これらの他のことのいずれかを行ったときにもデータベースを更新したいと思うでしょう。

したがって、KeyUpイベントを処理する代わりに、イベントを処理しCellValueChangedます。このイベントは、ユーザーがセルの値に加えられた変更をコミットするたびに発生します。これは通常、フォーカスがセルから離れたときに発生します。

ご指摘のとおり、Enter キーを押すとフォーカスが列の次のセルに移動し、Tab キーを押すとフォーカスが行の次のセルに移動するため、この場合は問題なく動作します。ユーザーがマウスを使用して別のセルをクリックしたり、矢印キーを使用して別のセルに移動したり、変更をコミットする他の多くの方法のいずれかを使用した場合にも機能します。

このイベントを処理すると、変更されたセルの正しい行インデックスと列インデックスが常に取得されます。この情報は、イベント ハンドラー メソッドDataGridViewCellEventArgsにパラメーターとして渡されるオブジェクトに含まれています。e

于 2013-03-19T04:18:38.367 に答える