gpt4 book ai didi

C# Winforms Designer 调用基本属性而不是 'new' 一个?

转载 作者:行者123 更新时间:2023-12-02 22:29:45 26 4
gpt4 key购买 nike

我有一个继承自另一个类的类,该类具有非虚拟属性(“控件”)。

由于我无法覆盖此属性,我使用与我的属性关联的“new”关键字。

在运行时,这个属性在正确的上下文中按照我的意愿被调用。

当我从设计器中打开我的表单时,设计器会调用 base.Controls 而不是我的"new"控件。

我是不是遗漏了什么,或者这只是 winforms 设计器中的错误行为?

编辑,添加了有问题的代码以获得更多解释。我有以下类(class):

public partial class BauerGroupBox : ComponentFactory.Krypton.Toolkit.KryptonGroupBox
{
public BauerGroupBox()
: base()
{
}
public new Control.ControlCollection Controls
{
get
{
MessageBox.Show("GOT THERE");
return this.Panel.Controls;
}
}
}

当我在我的初始化组件中得到以下代码时:

BauerGroupBox thisBox = new BauerGroupBox()
thisBox.Controls.Add(something)

当我向我的代码中添加一个新的“BauerGroupBox”时,它工作正常。然而,当我在设计器中打开我的代码时(即使在使用 devenv 调试时),消息框没有显示,断点也没有命中。

当我运行我的应用程序时,遇到了断点。

最佳答案

您遗漏了一些东西 - 您所描述的是正确的行为。

解决方法是在调用 InitializeComponent() 后立即重新填充新的 Controls 属性。像这样:

public MyForm()  {
InitializeComponent();
this.Controls.AddRange( base.Controls );
}

但是,您为什么要尝试“覆盖”Controls 属性?您追求什么新的、非标准的行为?我相信有更好的选择。

关于C# Winforms Designer 调用基本属性而不是 'new' 一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498565/

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