2012-06-09 144 views
0

我有一個datagridview與複選框在其中的列。我想要做的是當用戶點擊複選框時,我需要檢查其他一些條件,並且只有當條件滿足時才允許選中複選框,其他方式則停止事件並且不允許複選框選擇。C#DataGridView複選框,如果條件不符合不允許選擇

可以將某些一個引導請?

+0

中提到的事件[這個問題](http://stackoverflow.com/questions/932040/triggering-a-checkbox-value-changed-event-in-datagridview-c-net)可能會幫你,只是在那裏做你的驗證。 – Bridge

回答

0

好的,所以這裏是我的問題的回顧 我有一個Windows窗體應用程序,它從數據源(文件,數據庫等)加載一些信息。 加載時,每行的第一列中都有DataGridViewCheckBoxCell。要求是,當用戶點擊複選框時,必須針對源檢查該特定行未被來自任何其他工作站的任何其他用戶檢查。 我的解決方案的邏輯,我設想是: 我想,以確保當用戶點擊該單元格,檢查chackbox之前,我從數據源檢查並不允許複選框被選中或允許它基於如果該行被別人使用或不被使用。

我的解決方案: 我想到的是使用CellClick事件,因爲當用戶單擊單元格時,複選框尚未選中,那麼我檢查數據源是否有其他用戶正在使用它,如果正在使用它,我設置了 checkbox.ReadOnly =真

這樣該事件本質上是死的,什麼也沒有發生...... :-) 我希望我有更好的辦法,但這個工作適合我的需要。

感謝每一個誰試圖幫助。

0

那真的很簡單。

你可以將事件haandler連接到您的複選框,當事件觸發只是檢查需要檢查的一切,如果條件不具備,則調用取消選中該複選框。

+0

我想我的問題含糊不清。當用戶點擊複選框時,在實際選中複選框之前,我想驗證我的條件,如果他們見面,我允許事件完成並且複選框顯示爲已選中,否則,複選框從未被選中 – user1063108

+0

只需調用'checkBox.Checked =假;如果條件不符合。 – Mayank

+0

hunm ..我應該試過這個,但這裏是我的理解..當用戶點擊時,我可以從數據庫驗證,這將返回並需要時間,現在在這段時間內用戶將看到複選框被選中,一旦我從數據庫獲得數據,那麼我可以設置checkbox.checked = false;然而在此期間,複選框將顯示爲已選中狀態,這就是我不想做的事情,我實際上希望它是乾淨的(希望),並且不會允許實際的檢查事件完成。有沒有辦法來捕獲像你需要,如果可能的重新思考設計以這種方式 – user1063108