- PR -

TabPageクラスEnabledプロパティについて

1
投稿者投稿内容
勇気
会議室デビュー日: 2004/09/22
投稿数: 11
投稿日時: 2004-10-06 16:47
開発環境
OS :WindowsXP
言語:Microsoft Visual C# .NET 2003(Framework 1.1 SP1)



お世話になっております。

現在C#.NETを使いWindowアプリケーションを開発しております。
特に問題はないのですが、開発して疑問に思う事がありますので
ご存知の方がいましたらお教えください。

TabPageクラスEnabledプロパティについてなのですがこのプロパティ、
MSDNヘルプに載っていない(IntelliSenseにも表示されない)のですが
コーディングしてもコンパイルエラーにはならず、
Enabledとしての処理は正常に動きます。
(Enabled=falseにした場合、タグに貼り付けてあるコントロール
 がすべてEnabled=falseの状態になる。)

TabPageクラスはPanelクラスを継承しPanelクラスはControlクラスを
継承し作られているのですが、ControlクラスでPublicメンバとして
存在するEnabledがTabPageクラスにて(実際には存在するのに)表示され
ないのは何故なのでしょうか。
MSDNにたまたま載ってなく、IntelliSenseにもたまたま表示されないだけ
なのでしょうか。

また、これが意図的であった場合
同じように、基本クラスにてPublicのメンバを継承クラスにて存在しているが
見せないようにする(今回のTabPageクラスのEnabledプロパティのように)こと
は可能なのでしょうか。


実際に上記のような機能(?)を使う場面は想像できないのですが
気になりましたので質問させていただきました。

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-10-06 17:55
引用:
TabPageクラスEnabledプロパティについてなのですがこのプロパティ、
MSDNヘルプに載っていない(IntelliSenseにも表示されない)のですが
コーディングしてもコンパイルエラーにはならず、
Enabledとしての処理は正常に動きます。

??たしかに不思議ですね。でも以下の例では普通にEnabledを使用していますね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcon/html/vbtskchangingappearanceofwindowsformstabcontrol.asp
勇気
会議室デビュー日: 2004/09/22
投稿数: 11
投稿日時: 2004-10-06 18:54
ご返信ありがとうございます。

MSDNには載っていたのですね。検索不足でした。
しかし、何故TabPageのメンバ一覧などに乗ってないのでしょうか。
不思議ですよね。
それとも当たり前のことなのでしょうか。。。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-10-07 10:55
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfSystemWindowsFormsTabPageClassEnabledTopic.asp
publicプロパティだけど独自に作成したコード内で直接使用することをサポートして
いないということみたいですね。・・じゃぁあのコード例はいったい・・
kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2004-10-07 13:37
TabPageのVisibleプロパティもEnabledプロパティと同様にMSDNで「直接使用できない」とされていますが、Visibleの方は正常に動作しないようです。
(Visible=Falseを指定しても非表示にならない)

VB.NETではTabpageのEnabledもVisibleもIntelliSenseには表示されます。
デザイナのプロパティウィンドウにはどちらも表示されません。

「別に使ってもいいけど動作は保障しないよ」と解釈すればいいのでしょうか?


[ メッセージ編集済み 編集者: kanai 編集日時 2004-10-07 13:40 ]
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-10-07 15:38
引用:
同じように、基本クラスにてPublicのメンバを継承クラスにて存在しているが
見せないようにする(今回のTabPageクラスのEnabledプロパティのように)こと
は可能なのでしょうか。

いま見つけたんですがこれじゃないでしょうかね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemcomponentmodeleditorbrowsableattributeclasstopic.asp
同じproject内(?)だと見えてしまうようですが。
([解説]の「メソッドまたはプロパティのどちらを表示するかを決定します」は
「メソッドやプロパティを表示するかどうかを決定します」の間違いだと思います)
勇気
会議室デビュー日: 2004/09/22
投稿数: 11
投稿日時: 2004-10-07 17:24
べるさん
 ご返信ありがとうございます。

 MSDNにTabPage.Enabled プロパティのページがあったのですね。
 またまた検索不足でした。
 (んー もっと精進せねば。。。
  しかし、MSDNのキーワード検索で「TabPage.Enabled」の検索結果
  からは到達できましたが、TabPageクラスのページからは到達する
  事ができませんでした。
  次回からはキーワード検索を積極的に使っていこうと思います。)


kanaiさん
 ご返信ありがとうございます。

 Visibleプロパティも同じだったんですね。(しかも動作しない。。。)
 ということは他にも同じように隠れたプロパティが存在するって事ですよね。
 全部提示した上で、「保障しません。」なり書いておいてもらえると使う側としては
 ありがたいのですけれど。。。

 >「別に使ってもいいけど動作は保障しないよ」と
 >解釈すればいいのでしょうか?
 と、解釈するとべるさんもおっしゃってるとおり「あのコード例はいったい。。。」
 ということになるんでしょうね。
 例に使うくらいですからTabPage.Enabledプロパティに関しては大丈夫なんだとは
 思いますが。。。


べるさん
 ご返信ありがとうございます。

 DLLを作って試してみました。
 確かにIntelliSenseには表示されませんが、正常に動作するプロパティを作ることが
 できました。
 ありがとうございます。



返信をいただいたお二方、ありがとうございました。
まだまだわたしの知らない便利なクラスたちが数多く存在しているのでしょうね。。。
これからも日々精進して行きたいと思います。


1

スキルアップ/キャリアアップ(JOB@IT)