Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C中实现IWINDOWSFormsEditor服务?a、 k.a.在Windows窗体中模拟就地编辑_C#_Custom Controls_Propertygrid_Inplace Editing - Fatal编程技术网

C# 如何在C中实现IWINDOWSFormsEditor服务?a、 k.a.在Windows窗体中模拟就地编辑

C# 如何在C中实现IWINDOWSFormsEditor服务?a、 k.a.在Windows窗体中模拟就地编辑,c#,custom-controls,propertygrid,inplace-editing,C#,Custom Controls,Propertygrid,Inplace Editing,我想实现一个自定义的基于Windows窗体的控件,类似于VisualStudio属性网格。为此,尽管要简单得多。理想情况下,我希望复制IWindowsFormsEditorService接口的行为,该接口用于通过调用客户端指定的UITypeEditor实现来触发属性网格中的就地编辑 作为一个简单的例子,我只需要通过模拟的组合框或单元格中的下拉列表来实现编辑值。VisualStudio的工作方式涉及一个真正的组合框控件。相反,VisualStudio会在单元格右侧显示一个小下拉按钮,按下该按钮时,

我想实现一个自定义的基于Windows窗体的控件,类似于VisualStudio属性网格。为此,尽管要简单得多。理想情况下,我希望复制IWindowsFormsEditorService接口的行为,该接口用于通过调用客户端指定的UITypeEditor实现来触发属性网格中的就地编辑

作为一个简单的例子,我只需要通过模拟的组合框或单元格中的下拉列表来实现编辑值。VisualStudio的工作方式涉及一个真正的组合框控件。相反,VisualStudio会在单元格右侧显示一个小下拉按钮,按下该按钮时,会触发简单ListBox控件的显示和操作,该控件的位置可以模拟下拉的组合框

我明白,为了实现这一点,我需要在进行编辑时实现自己的模式消息循环。但是,我在理解如何以及在何处放置此消息循环时遇到一些困难。我还遇到下拉列表超出自定义控件边界的问题

<>我非常精通COM和C++,但是我想为这个实现一个纯的基于C的解决方案。
在自定义类似网格的控件中实现简单的模拟组合框就地编辑的好方法是什么?

您应该为包含列表框的模式编辑体验创建一个单独的表单,然后通过调用ShowDialog来显示它

ShowDialog方法将在模式消息循环中显示。 因为它是一个单独的表单,所以父控件的大小不会有任何问题