Kse*_*pac 10 c# visual-studio-2008 winforms
我正在制作一些控件,它们都必须共享相同的外观和一些常见的行为,尽管它们用于不同类型的输入.所以我创建了一个继承自UserControl的BaseClass,我的所有控件都继承自BaseClass.
但是,如果我在设计器中添加BaseClass的控件,例如TableLayoutPanel,我在设计继承的类时无法访问它们.我看到了TableLayoutPanel,但即使他是"受保护的",我也无法修改它或通过设计器将控件放入其中.我通过代码访问它没有任何问题,但我不想失去使用设计器的能力.
现在,我只是从BaseClass中删除了所有控件,在每个继承的类中添加了布局和所有常用控件,然后使用引用在BaseClass中操作它们.但这根本不能让我满意.有没有办法让设计师使用继承的受保护成员控件?
环境:C#,.NET 3.5,Visual Studio 2008
编辑回答SLaks的建议.我尝试设置一个属性,虽然我不习惯使用它,但它似乎不起作用.这是我试过的代码:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
public TableLayoutPanel TableLayoutPanel1
{
get { return tableLayoutPanel1;}
set { tableLayoutPanel1 = value;}
}
}
public partial class UserControl2 : UserControl1
{
public UserControl2()
{
InitializeComponent();
}
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*oyo 11
当您尝试从设计器的继承控件访问基本控件中声明的TableLayoutPanel时,您将在WinForms中使用名为"Visual Inheritance"的功能.
不幸的是,TableLayoutPanel不支持可视继承:http: //msdn.microsoft.com/en-us/library/ms171689%28VS.80%29.aspx
这就是为什么TableLayoutPanel在继承的控件中出现阻塞的原因.
| 归档时间: |
|
| 查看次数: |
10727 次 |
| 最近记录: |