最近、会社で随分前に作った.NET1.1向けのアプリをWindows7でも動く様に手直しする仕事をしています。
…と言っても1.1で作られたアプリは一応CLR2.0上で動作するし、実際に不具合は無いみたいだったので放置でも良かったのですが、バグも多かったし直すついでにね。
その際、UIの角ばったボタンやテキストボックスも嫌だったので、
Application.EnableVisualStyles() を使って見た目をWin7風にしたところ、表題の『ラベルをダブルクリックするとコピーされる』現象に出くわしました。
最初は困惑しましたが、どうやらそういう仕様に変わったみたいですね…。
これ、一見便利な気もするけど非常に困る。この機能だけ無効にする事も出来ない様子でMicroSoftさんマジ勘弁してくださいよというのが正直なところ。
(ラベルダブルクリックで別フォームを呼び出すような方法が良くないといえばそれまでですが)
この自動ラベルコピー(と呼ぶべき?)は、UIのスタイルにかかわらず、Application.EnableVisualStyles()を呼んだ事によって発生するみたいです。
試しにこんなコードを書いて角ばったUIにしても自動ラベルコピーは出来てしまう。
Module Module1 Sub Main() Application.EnableVisualStyles() Application.VisualStyleState = VisualStyles.VisualStyleState.NonClientAreaEnabled Application.Run(New Form1) End Sub End Module
尚、プロジェクトのプロパティで『アプリーションフレームワークを有効にする』にチェックを入れてる場合は、その下の『XP Visualスタイルを有効にする』にチェックが入っていると自動ラベルコピー状態になります。
結局のところ、自動ラベルコピーが嫌な場合は、古いUIデザインで我慢するか、個別に何か処理を加えるとか、ラベルコントロールを自作するとか…状況に応じて考えなきゃイカン感じです。
0 件のコメント:
コメントを投稿