Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为继承的用户控件使用设计器?_C#_Visual Studio 2010_Windows Forms Designer - Fatal编程技术网

C# 如何为继承的用户控件使用设计器?

C# 如何为继承的用户控件使用设计器?,c#,visual-studio-2010,windows-forms-designer,C#,Visual Studio 2010,Windows Forms Designer,我尝试将设计器用于继承的用户控件,但不幸没有成功 我的问题是,我不能像预期的那样设计模板。当AbstractWizardElement是从表单派生出来的,但即使是UserControl,它也能完美地工作。如果我用设计器打开我的ConcreteWizardTemplate,我可以从工具箱中添加组件,尽管我无法设计或设置它们的样式 #if DEBUG public class AbstractWizardElement : UserControl { ..

我尝试将设计器用于继承的用户控件,但不幸没有成功

我的问题是,我不能像预期的那样设计
模板。当
AbstractWizardElement
是从
表单
派生出来的,但即使是
UserControl
,它也能完美地工作。如果我用设计器打开我的
ConcreteWizardTemplate
,我可以从工具箱中添加组件,尽管我无法设计或设置它们的样式

#if DEBUG
    public class AbstractWizardElement : UserControl
    {
         ..
    }
#else
    public abstract class AbstractWizardElement : UserControl
    {
         ..
    }
#endif
有一个编译器开关,当调试模式打开时,它将
AbstractWizardElement
定义为一个普通类

如何像对待从
表单继承的元素那样设计
模板


我的环境是Visual Studio 2010和C#.net 4.0。

Visual Studio有一个有趣的怪癖,它没有在设计器中运行派生类/控件的构造函数。我经常通过创建从原始控件继承的另一个控件(在本例中,例如ConcreteWizardTemplateShim:ConcreteWizardTemplate)来修复此问题,然后在设计器中设计该控件。这对您有用吗?基类是否标记为抽象类?因为如果是这种情况,设计器将无法创建该控件的实例。谢谢您的评论@dash。我有另一个控件,它继承了
ConcreteWizardTemplate
。不幸的是,我不能“风格”他们太@Spontifixus:是的,当我不在调试模式下运行解决方案时。当它处于调试模式时,有一个编译器开关将它定义为一个普通类。也许你知道所有这些,但我不得不问:
ConcreteWizardTemplate
及其基类是否都有一个无参数构造函数?