0

質問があります。ベース コントロールの一部の要素とカテゴリを非表示にすることは可能ですか (カスタム コントロールの場合)。定義したプロパティのみを表示したい。御時間ありがとうございます。

4

2 に答える 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 に答える