2010-12-01 22 views
2

私は.NETのWindowsアプリケーションを持っています。DataGridviewで単一行を取得

私はDataGridViewに数行あります。ユーザーが行を編集できるようにボタンを含む列を追加しました。新しいフォーム/ダイアログ - 私の編集フォームがポップアップします。

// Add a CellClick handler to handle clicks in the button column. 
dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick); 

これは発火コード:

private void dgv_CellClick(object sender, DataGridViewCellEventArgs e) 
{  
    if (e.ColumnIndex == buttonCell) 
    { 
     // Get the id number 
     int number = Convert.ToInt32(dgv.Rows[e.RowIndex].Cells[0].Value); 


     EditForm edit = new EditForm(number); 
     edit.ShowDialog();     
    } 
} 

問題(正しく)

私の編集フォームが表示されます。私は自分の変更を行い、フォームを閉じます。その後、再び読み込まれます!これは、グリッド内の同じ行数に対してこれを行います。つまり上記のコードは、DataGridの各行に対して1回発生します。

どうすればこの問題を防ぐことができますか?より洗練されたソリューションはありますか?

答えて

2

CellClickイベントを複数回登録していないことを確認します。

つまり、あなたが(毎回のように、あなたのDGVに行を追加)複数回、このコードを呼び出すしていないこと:

dgv.CellClick += new DataGridViewCellEventHandler(dgv_CellClick); 
+0

それをチェックアウトします私はこれが欠けています!ご協力ありがとうございました。男、私はとても馬鹿だ。 – Matt

0

セルの内容がいつクリックされるかを確認するには、CellContentClickイベントを処理します。

代わりにdgv.CellContentClickを使用して問題が解決するかどうかを確認してください。 datagridview.cellclick eventについて

+0

おかげで、私はどうやったのか、私の神ああ – Matt

関連する問題