我正在尝试在Windows窗体PropertyGrid控件上执行一些自定义UI行为。我希望能够响应点击并双击GridItems来更改状态。例如,通过其状态翻转二进制或三元变量。
我可以通过查找typename“PropertyGridView”的子项来获取底层视图,并可以挂钩其Click事件。那么唯一的问题是我该怎么办?我找不到任何将鼠标坐标映射到网格项上的函数。
有一个SelectedGridItem,但这没有帮助。有许多地方你可以点击一个不更新这个属性的控件,因此响应Click假设SelectedGridItem被更新会得到很多不正确的结果。
除了购买商业地产网格控制或切换到某种网格视图外,我还能做些什么吗? PropertyGrid几乎就是我所需要的。我甚至考虑使用Reflector并使用此控件做一些非常不友好的事情来获取我需要的数据。 :)
更多信息:我确实知道使用自定义UITypeEditor类,并且我已经在其他领域(颜色选择器)执行此操作。不幸的是,进行自定义UI工作需要额外点击(浏览或下拉某些UI)。例如,我使用UITypeEditor.PaintValue嵌入了一个复选框,并且非常希望能够单击它来检查/取消选中。
答案 0 :(得分:2)
如果需要翻转简单类型的值,则可以在属性网格中显示枚举值。这将自动显示为下拉列表。 如果您需要创建一些更聪明的UI编辑器,我建议您查看以下文章,解释如何在属性网格中创建自定义UI: http://msdn.microsoft.com/en-us/library/aa302334.aspx http://msdn.microsoft.com/en-us/library/aa302326.aspx
如果要在属性网格中处理值更改以在应用程序中执行某些操作或更改属性网格中的值,则可以处理 OnPropertyValueChanged 在属性网格中的每次更改后引发。
一旦您可以创建自己的UI编辑器,就不必处理鼠标单击和鼠标双击。 UI编辑器可以是下拉编辑器或模态编辑器。我再次强烈建议您阅读上述文章。他们非常好。