Hatena::ブログ(Diary)

Kazzzの日記 このページをアンテナに追加 RSSフィード

2006-05-18

[]WebBrowserコントロールとTextプロパティ(その2)


やまきさんに言及頂いた。

Yuya Yamaki’s blog

最初は私も何か変わったことをしているのではないか、と思ったのだが、恐らくはSystem.Windows.Forms.WebBrowserBase#Textプロパティが以下のように実装されているだけではないだろうか。

[EditorBrowsableAttribute(EditorBrowsableState.Never)]
public override string Text {
  get { return ""; }
  set { throw new NotSupportedException(); }
}
(""が戻るのと、NotSupportedExceptionがスローされるのは確認済み。しかし、.NET Frameworkのアセンブリを解析するのはライセンス違反なので、以上はあくまでも想像のコード)

.NET Frameworkが出来、WindowsFormsが整備されて、System.Windows.Forms.Controlクラスという全てのコントロールのスーパクラスが提供されたことにより、例えばTextプロパティ等はコントロールの種別を意識しないでアクセスできるプロパティだと思っていたのだが、残念ながらそうではなく、例え文字列プロパティのアクセスであっても扱いに注意しなくてはならないようだ。

YamakiYamaki 2006/05/18 21:49 他に「このプロパティはサポートされていません。」と記載されているものを探したら、MaskedTextBox.AcceptsTabプロパティを見つけたのですが、こちらはNotSupportedExceptionがthrowされないようです。protected newとなっているのか、それともgetでfalseを設定しているのかのどちらかでしょうか。
「このプロパティはサポートされていません。」と書いてあるものが全部同じように実装されているわけではなさそうですね。
Kazzzさんいろいろとありがとうございました。

YamakiYamaki 2006/05/18 21:55 >それともgetでfalseを設定しているのか
setの間違いです。すいません。

KazzzKazzz 2006/05/19 06:50 Yamakiさん、コメントありがとうございます。
>「このプロパティはサポートされていません。」と書いてあるものが全部同じように実装されているわけではなさそうですね。

そうですね。
私はSystem.Windows.Forms.Controlクラスのプロパティ、特にTextプロパティに関しては多態を意識したプロパティだと認識していたので、コントロールの種別を特定せずにTextプロパティにアクセスする処理を書いていたのですが考えを改める必要があるようです。

トラックバック - http://d.hatena.ne.jp/Kazzz/20060518/p2