3流プログラマのメモ書き

元開発職→社内SE→派遣で営業支援の三流プログラマのIT技術メモ書き。 このメモが忘れっぽい自分とググってきた技術者の役に立ってくれれば幸いです。(jehupc.exblog.jpから移転中)

(VB.Net)テキストボックスでマウスオーバー時に背景色が変わってしまうバグ

下記の手順でテキストボックスでマウスオーバー時に背景色が変わってしまうバグを発生できます。

1.TabControl の上に GroupBox を乗せ、その上に TextBox を配置します。

2.その TextBox のプロパティで、Multiline=True , ScrollBars=Both にします。

3.そして、TabControl , GroupBox の背景を Transparent にします。

4.この状態で、Windows Vista でテーマを Aero か Vistaベーシックにします。

5..Net Frameworkは3.5 (サービスパックは未適用)です。

これで、TextBoxの上をマウスオーバーすると、、、

というように、TextBoxの背景がTabControlで描画している背景色と同じになってしまいます。

もちろんTextBox内に書かれている文字列も塗りつぶされて表示されません。

このおかしな表現のTextBoxをクリックすると、

というように文字列が表示されます。(それでも一部描画がおかしいですが。。)

これは解決するのにかなり悩みました。

しかし同様の問題に悩まされている方はいたらしく、C# と VB.NET の質問掲示板でもあがっていました。

結局、.Netのバグの路線が強いみたいです。

.Net Framework3.5のSP1ではこのバグは修正されたらしく、SP1適用すると発生しませんでした。

(実はTabControl,GroupBoxはInfragistics社のNetAdvantage for .NETの UltraTabControl,UltraGroupBoxを使ってたのですが、これらも結局、標準のコントロールを継承してるため、同様のバグが発生しました。)

.Net Frameworkほど膨大なクラスライブラリになると巨大だからなかなか難しいんでしょうが、それでもUIにかかわるバグはなくしてほしいですよね。