如何通过单击PropertyGrid查找GridItem?

时间:2020-03-06 14:36:30  来源:igfitidea点击:

我正在尝试在Windows窗体PropertyGrid控件上执行一些自定义UI行为。我希望能够响应并双击GridItems来更改状态。例如,通过其状态翻转二进制或者三元变量。

我可以通过查找类型名称为" PropertyGridView"的子项来查看基础视图,并可以挂接其Click事件。唯一的问题是我该怎么办?我找不到将鼠标坐标映射到网格项的任何函数。

有一个SelectedGridItem,但这没有帮助。我们可以在许多地方单击不更新此属性的控件,因此在假设SelectedGridItem已更新的情况下响应Click会得到很多错误的结果。

除了购买商业地产网格控件或者切换到某种形式的gridview之外,我在这里还能做些什么? PropertyGrid几乎正是我所需要的。我什至考虑在Reflector上徘徊,并使用此控件做一些非常不友好的事情,以获取所需的数据。 :)

更多信息:我确实了解有关使用自定义UITypeEditor类的信息,并且已经在其他领域(颜色选择器)进行了此操作。不幸的是,执行自定义UI工作需要额外的单击(以浏览或者下拉某些UI)。例如,我使用UITypeEditor.PaintValue嵌入了一个复选框,并且真的希望能够仅单击它来选中/取消选中。

解决方案

如果需要翻转简单类型的值,则可以在属性网格中显示一个枚举值。这将自动显示为下拉列表。
如果我们需要创建一些更聪明的UI编辑器,建议我们看一下以下文章,这些文章解释了如何在属性网格中创建自定义UI:
http://msdn.microsoft.com/en-us/library/aa302334.aspx
http://msdn.microsoft.com/en-us/library/aa302326.aspx

如果要处理属性网格中的值更改以在应用程序中执行某些操作或者更改属性网格中的值,则可以处理
OnPropertyValueChanged
属性网格中的每次更改后引发的值。

一旦可以创建自己的UI编辑器,就无需处理鼠标单击和鼠标双击。 UI编辑器可以是下拉编辑器或者模式编辑器。再次,我强烈建议我们阅读以上文章。他们很好。