台灣最大程式設計社群網站
線上人數
1067
 
會員總數:246142
討論主題:189725
歡迎您免費加入會員
討論區列表 >> VB.NET >> CellValuechanged 如何判斷是程式填入的還是鍵盤上修改的
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
CellValuechanged 如何判斷是程式填入的還是鍵盤上修改的
價值 : 100 QP  點閱數:299 回應數:4
樓主

P陳
初級顧問
14941 186
8956 2228
發送站內信

各位好:
請問一下,Dgv1 的 Cell(3)有設 CellValueChanged ,
資料修改有二種方式 1.用程式填入的 2.用鍵盤登打的,還要再作其他的檢查

請問下該如何在 CellValueChanged 時來判斷資料的變動是程式丟的還是鍵盤打的。



搜尋相關Tags的文章: [ CellValueChanged ellValueChanged 變動來源 ] ,
本篇文章發表於2019-11-10 15:54
1樓
最有價值解答

Ader Chen
檢舉此回應

我目前都是用旗標判斷, 例如:



缺點是, 要記得在需要的地方加 ChangedByUser = False、ChangedByUser = True,
期待有更好的方法...

本篇文章回覆於2019-11-11 01:15
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

P陳
檢舉此回應
早上起來又一番撕殺......................
後來找到了一個參數 iscurrentcelldirty 就解決問題了

用鍵盤的話 iscurrentcelldirty=true
用程式丟的話 iscurrentcelldirty=False

還在確認之中 ,也麻煩您共同確認一下
本篇文章回覆於2019-11-11 08:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

P陳
檢舉此回應
Private Sub DGV1_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGV1.CellValueChanged
If Not DGV1.IsCurrentCellDirty Then Exit Sub '用程式丟的

Select Case DGV1.Columns(DGV1.CurrentCell.ColumnIndex).Name
Case ("Field4")
MsgBox("Field4 is changed")
End Select
End Sub
本篇文章回覆於2019-11-11 08:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Ader Chen
檢舉此回應

關於 iscurrentcelldirty:
https://docs.microsoft.com/zh-tw/dotnet/api/system.windows.forms.datagridview.iscurrentcelldirty

有資料繫結與沒有資料繫結的的情況會有不同, 嚴格來說並不適合用來分辨是程式或使用者修改內容...
不過 case by case, 多做一些測試, 說不定在您的 case 沒問題.
僅供參考.
本篇文章回覆於2019-11-11 08:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.