gpt4 book ai didi

c# - 如何访问 winforms 设计器中的继承控件

转载 作者:可可西里 更新时间:2023-11-01 09:06:56 24 4
gpt4 key购买 nike

我正在制作一些控件,它们必须具有相同的外观和一些共同的行为,尽管它们适用于不同类型的输入。所以我创建了一个继承自 UserControl 的 BaseClass,我所有的控件都继承自 BaseClass。

但是,如果我在设计器中为 BaseClass 添加控件,例如 TableLayoutPanel,则在设计继承类时无法访问它们。我看到了 TableLayoutPanel,但即使他受到“保护”,我也无法修改它或通过设计器将控件放入其中。我可以通过代码访问它,但我不想失去使用设计器的能力。

现在,我只是从 BaseClass 中删除了所有控件,在每个继承类中添加了布局和所有公共(public)控件,然后使用引用在 BaseClass 中操作它们。但这根本不能让我满意。有没有办法让设计器使用继承的 protected 成员控件?

环境: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();
}
}

最佳答案

当您尝试从带有设计器的继承控件访问基础控件中声明的 TableLayoutPanel 时,您正在使用 WinForms 中称为“视觉继承”的功能。

不幸的是 TableLayoutPanel 不支持视觉继承: http://msdn.microsoft.com/en-us/library/ms171689%28VS.80%29.aspx

这就是 TableLayoutPanel 在继承的控件中显示为阻塞的原因。

关于c# - 如何访问 winforms 设计器中的继承控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1046328/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com