非仮想プロパティ (「コントロール」) を持つ別のクラスから継承するクラスがあります。
このプロパティを上書きできないため、プロパティに関連付けられた「new」キーワードを使用しています。
実行時に、このプロパティは、正しいコンテキストで必要に応じて呼び出されます。
デザイナーからフォームを開くと、デザイナーは「新しい」コントロールではなく base.Controls を呼び出します。
何か不足していますか、それとも winforms デザイナーの動作が正しくないのでしょうか?
編集、詳細な説明のために問題のコードを追加しました。私は次のクラスを持っています:
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;
}
}
}
私のinitializecomponentで次のコードに到達すると:
BauerGroupBox thisBox = new BauerGroupBox()
thisBox.Controls.Add(something)
コードに新しい「BauerGroupBox」を追加すると、正常に動作します。ただし、デザイナーでコードを開くと (devenv のデバッグを使用している場合でも)、メッセージ ボックスは表示されず、ブレークポイントはヒットしません。
アプリを実行すると、ブレークポイントにヒットします。