我有一个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