C#用户控件继承

C#用户控件继承,c#,inheritance,user-controls,user-interface,designer,C#,Inheritance,User Controls,User Interface,Designer,使用VS.NET2008,输出类型类库,目标框架.NET2.0 我想出了一个简单的场景来问这个问题 我有一个按钮用户控件,它是一个简单的面板,上面有一个大按钮 我想创建一个扩展按钮的RedButton控件,以及类似的绿色按钮,例如类RedButton:Button 理想情况下,当我打开RedButton的设计器时,我将看到我在button中创建的按钮,并能够对其进行修改,例如使其变为红色或更改字体等 我曾经尝试过这样做,但是当我打开红色按钮的设计器时,我只得到了一堆错误 在这种情况下,以编程方式

使用VS.NET2008,输出类型类库,目标框架.NET2.0

我想出了一个简单的场景来问这个问题

我有一个
按钮
用户控件,它是一个简单的面板,上面有一个大按钮

我想创建一个扩展
按钮
RedButton
控件,以及类似的
绿色按钮

,例如
类RedButton:Button

理想情况下,当我打开
RedButton
的设计器时,我将看到我在
button
中创建的按钮,并能够对其进行修改,例如使其变为红色或更改字体等

我曾经尝试过这样做,但是当我打开
红色按钮的设计器时,我只得到了一堆错误

在这种情况下,以编程方式完成所有这些工作对我们来说不是一种选择,因为在实际情况中,这将是一种痛苦

有人能解释一下吗?
非常感谢。

您的装配设置要延迟签名吗?查找“延迟签名”属性以及“项目属性”中的复选框。我见过延迟签约导致VS2005出现这种问题,也许这在VS2008中仍然是一个问题。

我在一家老公司多年来一直在处理这个问题。那时候我研究过一点。我认为没有解决这个问题的办法

我不知道您希望在实际示例中扩展多少基类,但是您在示例中提到的更改是微不足道的。差不多

btnTheButton.BackGround=Color.Red; 

事实上,可能您需要对按钮进行的任何更改都可以在几分钟内完成。不幸的是,每次您需要继承一个新控件时,这都需要几分钟的时间,但我认为这是唯一的选择

老实说,您的示例应该可以正常工作。只需确保为派生类提供默认构造函数。还要确保不要使用泛型控件,因为设计器不知道如何创建它的实例。

如果继承的控件来自DLL,而不仅仅是解决方案中的另一个类,则设计器将正确呈现继承的控件。我猜VS设计视图需要DLL来绘制控件。也可能有其他方法来解决这个问题。

自VS.NET 2008以来,根设计器能够显示您提到的“一堆错误”。一般来说,所描述的场景应该“正常工作”


您面临什么样的错误?

如果您还没有遇到,请遵循以下示例:

public class RedButton : Button
然后在XAML中,而不是

<UserControl></UserControl>

使用开始/结束XAML文件

<Button></Button>

请注意,即使尚未定义名称空间,也可以从另一个名称空间中的内容继承。例如:

<radDock:RadPane ...            
        xmlns:radDock="clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls.Docking"
        ...
        Title="{Binding Path=StudyTitle}"...

我假设您使用的是WinForms?您的问题得到回答了吗?