我想实现一个自定义的基于Windows窗体的控件,类似于Visual Studio属性网格。对于这一点,尽管简单得多。理想情况下,我希望复制IWindowsFormsEditorService接口的行为,该接口用于通过调用客户端指定的UITypeEditor实现来触发属性网格中的就地编辑。
作为一个更简单的示例,我只需要在单元格中通过模拟的ComboBox (或下拉列表)实现编辑值。Visual Studio实现它的方式确实涉及到一个真正的ComboBox控件。相反,Visual Studio会在单元格的右侧显示一个小的下拉按钮,当按下该按钮时,会触发一个简单的ListBox控件的显示和操作,该控件的定位方式是模拟正在下拉的ComboBox。
我知道要做到这一点,我需要在编辑发生时实现我自己的模式消息循环。但是,我在理解如何以及在何处放置此消息循环时遇到了一些问题。下拉列表超出了我的自定义控件的范围,我也遇到了一些问题。
我精通COM和C++,但我想为此实现一个纯C#的解决方案。
在自定义的类似网格的控件中实现简单的模拟CombBox就地编辑的好方法是什么?
发布于 2010-08-06 14:14:00
您应该为模态编辑体验创建一个单独的表单(包含一个列表框),然后通过调用ShowDialog()
来显示它。
ShowDialog()
方法将执行模态消息循环。
因为它是一个单独的窗体,所以父控件的大小不会有任何问题。
https://stackoverflow.com/questions/3421381
复制相似问题