我创建了一个包含自定义 UserControlToolStrip Control 。在整个应用程序中使用 UserControl 时,不能直接访问 ToolStrip 控件,因为它在逻辑上嵌入在 UserControl 中。
因此,为了访问 ToolStrip 的项目,我在 readonly 类中定义了一个 UserControl 属性,该属性返回 ToolStrip 的项目。
现在,可以通过使用 ToolStrip 属性以编程方式编辑 UserControl.Items 的项目,但我不能在设计模式下进行相同的操作。
就像有人将 UserControlToolBox 拖到表单中,转到 propertyGrid ,选择 Item 的属性并相应地操作根深蒂固的 ToolStrip 的项目;就像我们在 Items ToolStrip 的帮助下处理任何标准 Collection Editor 控件的项目集合一样。
在这里,虽然ItemsUserControl属性显示在propertyGrid中,但它不可用,每次点击都会显示错误信息

我确定这是因为该属性被声明为只读,我需要加息,以便在 propertyGrid 中单击它时,Items Collection Editor 会弹出 ToolStrip 的项目,因此可以进行处理。
那么我该怎么做呢?

最佳答案

您可以通过公开 ToolStrip 本身来做到这一点,但这不是一个好主意。 UserControl 不应公开其内部控件。

如果您的用户控件只有一个 ToolStrip,您应该考虑使用 CustomControl,它是一个继承 ToolStrip 的类,您可以免费获得其所有功能,包括设计功能。

关于c# - 如何在自定义 UserControl(.Net 4、Winforms)上使用项目集合编辑器?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12095899/

10-11 01:30