我有一個Windows窗體(.NET 3.5),其中包含一個propertygrid控件。定期刷新propertygrid控件會顯示它所代表的類中可能發生的任何更改。我只想在用戶當前未在網格中編輯屬性時進行刷新。有沒有辦法檢測用戶是否正在編輯控件?有沒有辦法檢測用戶是否正在編輯屬性網格中的屬性?
2
A
回答
0
可能有,但我可以建議讓你的類型工具INotifyPropertyChanged
,而不是刷新計時器上的網格?這樣你就不必自己撥打Refresh
;只要該屬性發生變化,顯示器就會自動更新每個屬性顯示的值。當然,如果你的類型有很多屬性,或者如果你使用你的網格來動態顯示許多不同類型的對象,這個建議可能不實際。這只是一個想法。
+0
每MSDN INotifyPropertyChanged不能和PropertyGrid一起工作:網格中顯示的信息是分配對象時屬性的快照。如果在運行時以代碼更改SelectedObject指定的對象的屬性值,則不會顯示新值,直到在導致網格刷新的網格中執行操作爲止。 – CoryG 2017-02-18 04:23:55
0
這是一個相當複雜的問題。我建議採取兩種方法:
- 跟蹤上次更改的事件觸發。
- Keep track of whether or not the control has focus.
如果控制尚未一定的閾值之內修改並具有焦點,或如果控制不具有焦點,我認爲這是足以確定其目前未被編輯。
0
您可以掛鉤OnLostFocus事件。這樣,只有當控件不再有焦點時,控件纔會更新。
protected virtual void OnLostFocus(EventArgs e)
2
是的 - 這是有點冒險,但你可以找出屬性網格的哪個子控件是活動的,並根據它是什麼進行有根據的猜測。以下似乎工作:
bool isEditing = (propertyGrid.ActiveControl.GetType().Name != "PropertyGridView");
相關問題
- 1. 有沒有辦法檢查一個屬性是否超載?
- 2. 檢查屬性是否具有屬性
- 3. 有沒有辦法使剪輯屬性與box-shadow屬性一起使用?
- 4. 有沒有辦法從facebook api中檢測用戶的「人性」?
- 5. 有沒有什麼辦法來檢查類的屬性在C#
- 6. 是否有辦法阻止屬性網格在Visual Studio中捕獲異常
- 7. 屬性是否有方法?
- 8. 有沒有辦法讓'this'屬性或'this other'屬性,但不是兩個?
- 9. 在屬性網格中編輯集合的正確方法是什麼
- 10. 有沒有辦法檢測一個網站是否使用SPDY?
- 11. 編輯GtkWidget屬性/屬性
- 12. 有沒有事件可以檢測出是否在Javascript中設置了屬性?
- 13. 有沒有辦法在html中修改css div的屬性
- 14. OpenAM:有沒有辦法以編程方式修改maxSessionTime屬性?
- 15. 有沒有辦法將屬性放在匿名類型屬性上?
- 16. 是否有通用屬性
- 17. 編輯數組/列表屬性網格
- 18. Amazon SimpleDB - 有沒有辦法列出域中的所有屬性?
- 19. 帶有Result屬性的Nunit TestCase屬性是否不正確?
- 20. 有沒有辦法在Excel中爲單元格使用「屬性」窗口?
- 21. EXTJS:編輯器網格 - 插入具有不同屬性的行
- 22. 有沒有辦法在Python Selenium中按屬性查找元素?
- 23. 有沒有辦法在sparql中列出子屬性?
- 24. 有沒有辦法在Spring XML中指定默認屬性值?
- 25. 有沒有辦法在Kivy中創建自定義屬性?
- 26. 有沒有辦法在TypeScript中重新定義一個屬性?
- 27. XML屬性沒有空格
- 28. 編輯沒有格式設置的屬性文件
- 29. 測試一個類是否有屬性?
- 30. 'CurrentUserDefault' 對象有沒有屬性 '用戶'
有一點,PropertyGrid停止是一個合適的替代窗體與其自己的專用控件。你越來越近了。 – 2010-09-22 15:11:18
我聽說你的漢斯... – PICyourBrain 2010-09-23 12:00:50