.net 如何从单击PropertyGrid查找GridItem?

.net 如何从单击PropertyGrid查找GridItem?,.net,winforms,propertygrid,.net,Winforms,Propertygrid,我正在尝试在Windows窗体PropertyGrid控件上执行一些自定义UI行为。我希望能够对GridItems上的点击和双击做出响应以更改状态。例如,通过其状态翻转二元或三元变量 我可以通过查找typename为“PropertyGridView”的子级来获得底层视图,并可以钩住它的Click事件。唯一的问题是我该怎么办?我找不到任何将鼠标坐标映射到网格项的函数 有一个SelectedGridItem,但这没有帮助。您可以在许多地方单击不更新此属性的控件,因此在假设SelectedGridI

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

我可以通过查找typename为“PropertyGridView”的子级来获得底层视图,并可以钩住它的Click事件。唯一的问题是我该怎么办?我找不到任何将鼠标坐标映射到网格项的函数

有一个SelectedGridItem,但这没有帮助。您可以在许多地方单击不更新此属性的控件,因此在假设SelectedGridItem已更新的情况下响应单击将得到许多不正确的结果

除了购买商业地产grid control或切换到某种gridview之外,我还能在这里做些什么吗?房地产网格几乎正是我需要的。我甚至在考虑使用Reflector漫游,并使用此控件执行一些非常不友好的操作,以获取我需要的数据。:)


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

如果需要翻转简单类型的值,可以在属性网格中显示枚举值。这将自动显示为下拉列表。 如果您需要创建更智能的UI编辑器,我建议您阅读以下文章,这些文章解释了如何在属性网格中创建自定义UI:

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


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

我正在尝试加快UI流程-下拉菜单的点击次数太多了。这里有一个很好的例子来说明我的意思。我通过UITypeEditor.PaintValue为bool属性嵌入了一个复选框。我想通过单击复选框来选中/取消选中。双击我想要通过简单枚举前进。