質問があります。ベース コントロールの一部の要素とカテゴリを非表示にすることは可能ですか (カスタム コントロールの場合)。定義したプロパティのみを表示したい。御時間ありがとうございます。
2 に答える
1
プロパティをシャドウして追加し[Browsable(false)]
ます。
例えば:
[Browsable(false)]
public new SomeType SomeProperty {
get { return base.SomeProperty; }
set { base.SomeProperty = value; }
}
于 2011-01-18T23:44:21.913 に答える
0
カスタム属性を使用して[Browsable(false)]
、プロパティが WinForms プロパティ エディターに表示されないようにすることができます。
[Browsable(false)]
public new PropertyType PropertyName
{
get { return base.PropertyName; }
set { base.PropertyName = value; }
}
ただし、これによりプロパティは引き続き機能しますが、フォーム デザイナーには表示されません。コンパイラは喜んでそれを受け入れます。プロパティの動作を実際に停止させたい場合は、例外をスローします。
[Browsable(false)]
public new PropertyType PropertyName
{
get { throw new InvalidOperationException("This property cannot be used with this control."); }
set { throw new InvalidOperationException("This property cannot be used with this control."); }
}
もちろん、コンパイラは喜んでそれを受け入れますが、実行時にスローします。ただし、そうであっても、クライアント プログラマは、基本型にキャストすることによって、つまり代わりに「元の」プロパティにアクセスできます。
myControl.PropertyName
彼らは書くことができます
((BaseControlType) myControl).PropertyName
そしてそれはまだうまくいくでしょう。これについてできることは何もありません (別の基本クラスから派生する以外は)。
于 2011-01-18T23:51:31.960 に答える