我想实现一个自定义的基于 Windows 窗体的控件,类似于 Visual Studio 属性网格。为此,尽管要简单得多。理想情况下,我希望复制 IWindowsFormsEditorService 接口的行为,该接口用于通过调用客户端指定的 UITypeEditor 实现来触发属性网格中的就地编辑。
作为一个更简单的例子,我只需要通过单元格中的模拟 ComboBox(或下拉列表)来实现编辑值。Visual Studio 这样做的方式确实涉及一个真正的 ComboBox 控件。相反,Visual Studio 在单元格的右侧显示一个小的下拉按钮,当按下该按钮时,会触发一个简单的 ListBox 控件的显示和操作,其定位方式是模拟 ComboBox 被下拉。
我知道要发生这种情况,我需要在进行编辑时以某种方式实现我自己的模式消息循环。但是,我在理解如何以及在何处放置此消息循环时遇到了一些麻烦。我也有下拉列表扩展超出我的自定义控件边界的问题。
我非常精通 COM 和 C++,但我想为此实现一个纯基于 C# 的解决方案。
在自定义网格状控件中实现简单模拟 CombBox 就地编辑的好方法是什么?