0

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

作为一个更简单的例子,我只需要通过单元格中的模拟 ComboBox(或下拉列表)来实现编辑值。Visual Studio 这样做的方式确实涉及一个真正的 ComboBox 控件。相反,Visual Studio 在单元格的右侧显示一个小的下拉按钮,当按下该按钮时,会触发一个简单的 ListBox 控件的显示和操作,其定位方式是模拟 ComboBox 被下拉。

我知道要发生这种情况,我需要在进行编辑时以某种方式实现我自己的模式消息循环。但是,我在理解如何以及在何处放置此消息循环时遇到了一些麻烦。我也有下拉列表扩展超出我的自定义控件边界的问题。

我非常精通 COM 和 C++,但我想为此实现一个纯基于 C# 的解决方案。

在自定义网格状控件中实现简单模拟 CombBox 就地编辑的好方法是什么?

4

1 回答 1

0

您应该为模态编辑体验制作一个单独的表单(包含一个列表框),然后通过调用ShowDialog().

ShowDialog()方法将模态消息循环。
由于它是一个单独的表单,因此您不会对父控件的大小有任何问题。

于 2010-08-06T06:14:00.423 回答