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