2010-10-18 69 views
1

我有一個DataGridView工作得很好。我只是用它來顯示數據。無法選擇數據綁定的複選框DataGridView

現在我希望能夠通過複選框選擇行,並在點擊一個按鈕時執行只有選定行的操作(此按鈕不在同一表單上的網格中)。 爲此,我正在遵循these步驟將複選框列添加到datagridview。

在運行應用程序時看到的是我無法通過鼠標單擊或鍵盤檢查複選框。通過它的外表我可以理解它不處於禁用/只讀狀態。所以,無論何時我嘗試點擊複選框,它都會像啓用複選框一樣正常更改邊框。但最後它沒有檢查複選框。

+0

嘗試重新表述您的問題,這有點難以正確理解。我意識到英語不是你的第一語言。 – leppie 2010-10-18 11:31:29

+0

好的!我會再試一次 – IsmailS 2010-10-18 11:33:59

+0

希望現在有道理。 – IsmailS 2010-10-18 11:42:28

回答

3

試試吧。

private void Form1_Load(object sender, EventArgs e) 
    { 
     DataGridViewCheckBoxColumn ck = new DataGridViewCheckBoxColumn(); 
     dataGridView1.Columns.Insert(0,ck); 
    } 

可能會幫助你。

伊斯梅爾這裏是你的你的困惑Dgv-DatabindingCompleteEvent

+0

很奇怪。有用!!!!仍然不知道爲什麼它在設計時添加不起作用 – IsmailS 2010-10-18 12:38:30

+0

我有一個數據網格與XAML中添加的複選框列一起工作,所以並不是說這不會起作用,好像還有別的事情發生。 – Mark 2010-10-18 13:57:44

+0

@Ismail,這裏是上面我把鏈接,應該引導你什麼時候應該你打電話給這個事件處理程序 – mahesh 2010-10-19 05:48:14

1

的解決方案,如果要檢查所有的複選框的狀態在DGV:

foreach (DataGridViewRow row in dataGridView1.Rows) 
{ 
    DataGridViewCheckBoxCell chk = row.Cells[0] as DataGridViewCheckBoxCell; 

    if (Convert.ToBoolean(chk.Value) == true) 
     MessageBox.Show("this cell checked"); 

} 
+0

謝謝你的答案@Satish。我知道你的答案是豐富的。但是,我很抱歉地說它離問題有很大距離。如果你刪除這個答案或者最終肯定會被標記並移除,那會更好。我建議您在發佈本網站之前閱讀[常見問題](http://stackoverflow.com/faq)。 – IsmailS 2011-05-19 07:18:05

1

我經歷了同樣的問題去了。對我來說,解決方案非常簡單。我的datagridview有一個禁用的編輯選項(因爲我不希望用戶更改數據),我想能夠檢查/取消選中我的DataGridViewCheckBoxColumn。因此,在dataGridView屬性中,我選中了「啓用編輯」選項,但在代碼中,除了我所需的checkBoxColumn之外,我已將其禁用。 希望它對人有幫助。