2010-12-01 50 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();     
    } 
} 

問題

我的編輯形式顯示(正確地)。我進行修改並關閉表單。然後再次加載!它爲我的Grid中相同數量的行執行此操作。 IE瀏覽器。它爲DataGrid中的每一行觸發上面的代碼一次。

我該如何預防?有沒有更優雅的解決方案?

回答

2

我會確保你沒有多次註冊CellClick事件。

即,你不調用此代碼不止一次(每次像你行添加到您的DGV):

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

哦,我的上帝,如何做我想念這個?!感謝您的幫助。男人,我覺得很愚蠢。 – Matt 2010-12-01 19:48:58

0

要確定單元格內容何時被點擊,請處理CellContentClick事件。

嘗試使用dgv.CellContentClick來代替,看看是否解決了這個問題。檢查文檔datagridview.cellclick event

+0

謝謝,我會檢查出 – Matt 2010-12-01 19:49:18

相關問題