2006年05月17日

マウスカーソルが消えてしまう

以前VB6とVB.NETでのマウスカーソルの形状について比較を行った。
「マウスポインタ(カーソル)の形状」

今回とりあげるのは比較ではなく、VB6、VB.NETに関係なく両方に起きる困った現象である。

テキストボックスに入力したコードをキーとしてデータベースからデータを取得する、こういうプログラムを作った。その際、データを取得するまで若干時間が掛かるのでその間マウスカーソルを砂時計になるようにコードを記述した。
注)この処理はテキストボックスのキーイベント内部で行うものである。

ところが、実行すると砂時計になる前にマウスカーソルが消えてしまった。そしてデータが取得されたころ、つまり元のカーソルに戻すコードにきて現れた。
一体何だこれは?と思い。またVB.NETの特例かと心配になり、VB6で似たようなサンプルを作って確かめたところ、こっちでも同じようにマウスカーソルが消えてしまった。

最初は、データ取得にCPU負荷が大きすぎて表示する余裕がないためかと思い、Application.DoEventsメソッドなどを追加してみたのだがやはり表示されない。
いろいろ調べてみた結果、やっと分かったのが、コントロールパネルの「マウス」のプロパティで「文字の入力中にポインタを非表示にする」が有効になっているときに起きるということだった。これを無効にするとちゃんと砂時計が表示された。また、この現象はWindows2000で起きたのだが、マウスのプロパティが同じでもWindowsXPでは起きなかった。つまりWindows2000の問題のようである。





posted by なっちゃん at 16:48| 静岡 ☁| Comment(0) | TrackBack(0) | VB vs VB.NET | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。