2012-08-14 109 views
3

當加載頁面時,將從數據庫綁定datagridview。防止加載時發生DataGridView RowEnter事件

我需要行輸入事件選擇行並基於從數據庫中檢索數據。

但在加載時它不應該發生。我怎樣才能做到這一點 ?

這是我的代碼

private void dgStation_RowEnter(object sender, DataGridViewCellEventArgs e) 
{ 
    dgStation.Rows[e.RowIndex].Selected = true; 
    int id = Convert.ToInt32(dgStation.Rows[e.RowIndex].Cells[1].Value.ToString()); 
} 
+0

你爲什麼這個標記用asp.net? – yogi 2012-08-14 06:44:14

+0

這個問題是從ASP.NET – 2012-08-14 06:54:41

+1

那麼你應該使用webforms而不是winforms標記它,而我在asp.net中是gridview而不是datagridview。 – yogi 2012-08-14 06:56:14

回答

5

您可以將電線處理程序加載表單之後,這樣的事情:

protected override void OnShown(EventArgs e) { 
    base.OnShown(e); 
    dgStation.RowEnter += dgStation_RowEnter; 
} 

確保從設計文件中刪除當前RowEnter處理程序。

或者只是使用一個裝載標誌:

private bool loading = true; 

protected override void OnShown(EventArgs e) { 
    base.OnShown(e); 
    loading = false; 
} 

private void dgStation_RowEnter(object sender, DataGridViewCellEventArgs e) { 
    if (!loading) { 
    dgStation.Rows[e.RowIndex].Selected = true; 
    int id = Convert.ToInt32(dgStation.Rows[e.RowIndex].Cells[1].Value.ToString()); 
    } 
} 
+2

由於某種原因,這對我來說不起作用,解決方法是檢查DataGrid.Focused = true,然後在數據綁定代碼完成後,手動調用DataGrid.Focus() - 這樣我有一個事件被解僱。 – tbone 2015-06-17 20:37:37

相關問題