DataGridView單元格驗證

2022-09-07 02:54:09 字數 865 閱讀 4239

驗證這個問題,本以為可以用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...