驗證這個問題,本以為可以用canceledit()輕鬆搞定。誰知道沒那麼容易。
據說函式執行順序是:
**自:
下面列出validation,enter/le**e和begin/end這些事件的順序(當editmode為editonenter時):
當從乙個單元格移動至另一單元格(在同一行內):
1) cell le**e (原來的單元格)
2) cell validating/ed (原來的單元格)
3) cell endedit (原來的單元格)
4) cell enter (新的單元格)
5) cell beginedit (新的單元格)
當從一行移動到另一行:
1) cell le**e (原來的單元格),row le**e (原來的行)
2) cell validating/ed (原來的單元格)
3) cell endedit (原來的單元格)
4) row validating/ed (原來的行)
5) row enter (新的行)
6) cell enter (新的單元格)
7) cell beginedit (新的單元格)
然後在cell le**e、validating 、validated中驗證如果不通過後,再canceledit,是走不通的!在這些函式裡邊的值都是修改前的值。
所以辦法是:
使用cell endedit,然後在cell le**e或者validate中,先記錄下修改前的值。如果驗證失敗了,在endedit中恢復。這樣無形中又多了乙個類的成員了~
不知道有沒有其他更好的辦法呢?
DataGridView 單元格驗證
定義單元格驗證 要求 驗證錯誤後焦點不離開。實現 單元格的驗證可以使用dgv details cellvalidating事件。驗證不通過時呼叫e.cancel true 終止事件鏈,單元格將保持編輯狀態。呼叫dgv details.canceledit 可以使單元格的內容會滾到修改前的值。使用sy...
datagridview單元格合併
最近遇到乙個比較棘手的問題那就是對datagridview進行單元格合併的處理,在網上找了很久合併的問題倒是解決了 不過合併後卻無法讓內容居中顯示!經過苦思冥想發現是這個合併的方法有問題,他緊緊是把邊緣線去掉並沒有完成真證意義上的合併!現在把此方法分享給大家,希望各位大蝦能補充補充!private ...
DataGridView單元格美化
region 重繪column row int rowheadwidth 41 重繪column row private void gdvpersoninfo cellpainting object sender,datagridviewcellpaintingeventargs e else if...