DOBON.NET DOBON.NETプログラミング掲示板過去ログ

基本クラスのプロパティを隠す

環境/言語:[XPPro,VB2003,Framework1.1]
分類:[.NET]

いつも拝見しています。分からないことがあるので教えてください。
現在、System.Windows.Forms.ComboBoxを継承したコントロールを作成して
います。やりたいことは、基本クラスにあるDropDownStyleプロパティ
を作成したコントロールのプロパティウインドウに表示したくないのです。
新たに作成したプロパティであればBrowsableをfalseにすれば表示されませんが、
基本クラスに元々あったものを表示しないようにすることはできるのでしょうか?
お願いします。
#あてずっぽ

Public Shadowsで再定義してBrowsable属性を付けるとか。
呼び出しすら禁止ならPrivate Shadowsするとか。
■No19883に返信(まどかさんの記事)
> #あてずっぽ
>
> Public Shadowsで再定義してBrowsable属性を付けるとか。
> 呼び出しすら禁止ならPrivate Shadowsするとか。

返信ありがとうございます。
<Description(""), Browsable(False)> _
Public Shadows Property DropDownStyle() As ComboBoxStyle

でできました。Privateにするとなぜかプロパティウインドウに表示されてしま
います。なんで?

またお願いします。
■No19883に返信(まどかさんの記事)
> 呼び出しすら禁止ならPrivate Shadowsするとか。

こちらにも書いておきましたが、それは駄目でしょう。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39161&forum=7&start=8
> こちらにも書いておきましたが、それは駄目でしょう。
> http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=39161&forum=7&start=8

基本クラスへ突き抜けるとは知りませんでした。。。
解決済み!
すみません。解決だと思っていたのですが。
確かにプロパティウィンドウには、表示されなくなったのですが
説明不足でしたが、作成したコントロールから基底クラスのDropDownStyleを
設定・取得もさせたくないです。じゃんぬねっとさんの参考リンクをみると
結局、基底クラスのプロパティを隠す(エディタででないようにする
+コンパイルエラーにする)はできないようですね。

私がやりたいことはComboBoxクラスを継承して作成するものでは
ないのでしょうか?
■No19893に返信(maruさんの記事)
> 私がやりたいことはComboBoxクラスを継承して作成するものではないのでしょうか?

クラスという面からするとラッピングしてしまって、必要なものだけを公開すれば結果として必要のないものは外部に公開させなくすることはできます。
しかし今回のようなコントロールでは UI が絡むためこの方法は賢明ではありません。

表示させなくすることで諦めるか、継承クラス型からの取得 / 設定を阻止するくらいしか対応できないでしょう。
そもそも、なぜ取得 / 設定させたくないのかが良くわかりませんが...
> 表示させなくすることで諦めるか、継承クラス型からの取得 / 設定を阻止するくらいしか対応できないでしょう。
> そもそも、なぜ取得 / 設定させたくないのかが良くわかりませんが...

返信ありがとうございます。DropDownStyleをDropDownList固定にする予定
でしたが、内部のロジックで全てに対応できるようにしました。
これで何とか解決です。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板