![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 黑熊 ![]()
![]() |
那如果我想要做要使用者輸入的數值小於零時觸發DataErroe事件辦法做到嗎?還是一定要在其他事件自己寫判別條件才可以,如果是的話應該要怎麼做呢? 我目前是在CellValueChanged事件寫判別是然後跳出視窗提示使用者格式錯誤,但沒辦法像DataErroe事件那樣在使用者輸入資料格式修改前一直跳出錯誤訊息攔住使用者 不知道有沒有辦法讓DataType屬性加入 >0 這樣的條件? 目前還有看到DataTable.ConstraintCollection類別可以設定條件約束,但這好像不用來設定資料格式,而是用來設定DataTable關聯性用的 |
1樓
最有價值解答
Ader Chen ![]() |
參考 DataGridView.CellValidating 事件: https://msdn.microsoft.com/zh-tw/library/system.windows.forms.datagridview.cellvalidating(v=vs.90).aspx 在其中作資料驗證動作, 若不通過, 就將 e.Cancel = True, 輸入焦點就不能離開該 Cell.
本篇文章回覆於2018-04-20 12:21
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓 |
另, {讓DataType屬性加入 >0 這樣的條件?} 不就是您第一行說的 正整數? 例如 .DataType = System.Type.GetType("System.UInt32") '大於等於0的正整數 參考:https://msdn.microsoft.com/zh-tw/library/system.data.datacolumn.datatype(v=vs.110).aspx
本篇文章回覆於2018-04-20 12:31
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
黑熊 ![]() |
感謝 Ader Chen 的解答
我問題描述的不夠清楚,我想做到的是讓使用者只能輸入大於零的浮點數,所以單用DataType好像不能達到要求 用了DataGridView.CellValidating 事件之後可以在焦點離開的瞬間撈出被修改的儲存格資料,並使用e.Cancel = True來決定驗證後是否讓使用者離開這個焦點 這樣我就可以做到更細緻的資料條件驗證,比起DataType來的彈性 不過 DataGridView.CellValidating 比DataGridView.DataErroe 事件先發生,所以如果要限制資料型態以外的格式至還是在DataGridView.CellValidating才能進行
本篇文章回覆於2018-04-20 16:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓
作者回應
黑熊 ![]() |
剛剛發現雖然可以禁止使用者編輯其他儲存格,但如果使用者操作其他控制項就可以忽略警告了,這樣好像沒有把防呆做得很徹底...
本篇文章回覆於2018-04-20 16:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |