0

我正在使用 Visual Studio 2010、C# 和 WinForms,并创建了如下自定义组件:

public partial class SlidePanel : Panel 
{
    some code here...
}

所以它是一个组件类而不是用户控件。

我想要的是当我在 windows 窗体上拖动我的组件以在窗体下方获得一个代表我的组件的图标时。一个示例是现有的绑定源控件 - 当您将其添加到表单时,它会在表单下方(在表单设计器上)为您提供一个图标,您可以选择该图标然后更改属性。我怎样才能做到这一点?该图标可以是通用的。

4

2 回答 2

0

所以它是一个组件类而不是用户控件。

不,两者都不是。它仍然是一个面板控件,您只是自定义了它的行为。如果此类在您的解决方案的项目中,那么您将在编译后自动将其添加到工具箱中。在顶部,就在箭头之后。如果这没有发生,那么您的设置错误。工具 + 选项、Windows 窗体设计器、常规,确保 AutoToolboxPopulate 设置为 True。

如果您确实想要您描述的内容(底部添加的图标),那么您需要创建一个派生自 Component 的类。这是一种非常不同的动物,它不能在形式上具有视觉表示。它当然不能像面板之类的东西。有关示例,请参见此答案。

于 2012-07-28T19:59:08.077 回答
0

我知道这已经很晚了,但我只是在阅读相同的问题,而这个问题引起了我的兴趣。我在这里假设您要做的是在您的表单上有一个可以在设计器中缩小的控件。结果,这将使控件从窗体中消失。通过在表单下方有一个组件,您仍然可以通过选择该组件来编辑其属性。

我的想法是尝试 ControlDesigner。我不确定这是否可行,这不是一个微不足道的解决方案,我目前没有时间研究它,但你可以通过两种方式来这里。

一:ControlDesiger 会让你阴影属性,所以当你在设计器中设置它们时它们没有效果,这就是你设置为不可见的控件在设计器中保持可见的原因。阴影属性将没有效果或将具有您提供的效果,但随后会在序列化时更新实际属性。

二:您实际上可以在控件设计器中动态创建一个组件,并在您添加面板派生控件时将其添加到窗体中。然后,当您在组件中设置属性时,此更改可以反映在您的控件中。几年前我做了类似的事情只是为了浪费时间,但我并没有花很多时间真正让它正常工作,所以可能不会发生。

只是一些想法

丹尼胡特

于 2017-03-18T01:07:39.900 回答