2014-01-15 38 views
3

对Visual Studio 2010不熟悉,但已使用其他平台进行Windows开发超过10年。我在其他平台(如Visual FoxPro)中完成了以下工作,但它似乎不适用于VS ...Visual Studio - 可以将控件添加到设计器中的基于面板的用户控件中吗?

我创建了一个用户控件,其中包含一个面板,其中包含一些标签和几个按钮。当我制作一个新窗体(WinForm)并将此用户控件放到窗体上时,我无法将其他控件添加到该窗体中。用户控件作为单个项目(紫色齿轮图标)出现在文档大纲中,无法访问面板或面板中包含的控件。

这是用户控件的不恰当使用吗?在这个应用程序中,我将有许多面板中包含相同的按钮和标签以及其他控件的独特组合。让用户控件提供面板并包含通用控件似乎很自然,然后只需放入设计器中面板各种实例所独有的控件即可。如果我必须从基本控件构建设计器中的所有面板,我会这样做,但我希望能够使用看似明显的OOP过程。

回答

1

如果您不是从UserControl继承,而是从Panel继承,那么控件仍然是一个Panel,您可以在其上添加子控件。

注意事项:通过控制自身添加

1)子控件被认为是许多面板上的方法和getter子控件(它们不会自动隐藏)。我从来没有试过这个。但子类Form和从子类化形式派生用户形式工作正常。而WinForms设计器则以不可修改的元素优雅地显示继承的子元素。

2)在派生类中,倾向于重写OnXxx()方法来对Panel事件执行内部操作,而不是将处理程序附加到Xxx事件:这将允许您决定是否应该在附加处理程序之前或之后执行代码它在调用base.OnXxx(sender,e)之前或之后;

0

尽管您正在创建我的用户控件本身包含一个Panel,但其技术上不再是您的应用程序中的Panel。这在技术上是一种新的控制。

也许您应该建立一个足够动态的控件,其中所有面板和控件都位于相同的自定义用户控件上,但会根据需要动态显示和隐藏它们。

+0

我从来没有尝试过这种方式,但是您可以创建一个面板并将自定义控件放在上面。那么你可以添加任何你想要的面板。 – logixologist

+0

这可能是我的终极解决方案。很明显,用户控件不起作用,并且子类化面板听起来很麻烦。谢谢! – twitort

相关问题