none
オプションボタンのラベルのフォーカス RRS feed

  • 質問

  • VS2008でWindowsFormを使用したアプリケーションを作成しています。

    ラジオボタンやチェックボックスをマウスでクリックしてにフォーカスがあたった場合には、
    値の文字の部分に点線の四角枠が表示されるのが通常の動作だと思うのですが、
    なぜかWindows Server 2008上で起動させると点線の四角枠が表示されません。

    ただし、Tabキーでラジオボタンやチェックボックスにフォーカスを移動させた場合にはきちんと点線の四角枠され、
    この以降はクリックした場合でも点線の四角枠が表示されます。

    マウス操作のユーザーの場合、
    どこにフォーカスがあたっているのかわからないと言われて対応に困っております。


    .NetではOSが変わっても基本的には同じ挙動をしなければならないと思うですが、
    みなさんの環境でも同じ現象になりますでしょうか?


    【開発環境】
    Vistual Studio 2008 SP1
    Vistual Basic (.Net Framework 3.5でビルド)

    【稼働環境】
    Windows Server 2008 ServicePack 2 (32bit)
    .Net Framework 3.5 ServicePack 1
    画面のデザイン Windowsクラシック
        ※ 複数のマシンで試したのですが全部NGでした

    【検証アプリ】
    空のWindowsフォームにラジオボタン、チェックボックスを配置してビルド

    【他に検証したOS】
    XP           OK
    2003R2    OK
    (どれも.Net Framework 3.5 ServicePack 1です)


    よろしくお願いします。

    2010年6月25日 3:15

回答

すべての返信

  • Windows Server 2008 はカーネルが Vista と同じなのでこのあたりに関係あるのかな・・・。他の OS では発生しないようですね。

    Vistaでフォーカス枠(点線の四角形)を描画させる
    http://d.hatena.ne.jp/hiromsa/20080307

    • 回答としてマーク 72818 2010年6月25日 3:45
    2010年6月25日 3:26
  • 2008 Server上で同様の設定をしたところ、四角い枠が表示されるようになりました。

    この設定は知りませんでした・・。早速の返信ありがとうございました。

    2010年6月25日 3:49
  • 私も困っていたので助かりました(Vista 環境)。
    (追記:Windows7も同様)

    検索しても以下のような未解決のものしか見つけられず、あきらめていました。

    CheckBoxコントロール、フォーカス取得時のテキスト部分の枠線について
    http://social.msdn.microsoft.com/Forums/ja-JP/csharpgeneralja/thread/01d05ef0-f880-4c41-a3f9-9b12ba61aff5

    2010年6月25日 4:49
  • 本題とは異なる話で申し訳無いですが…

    >.NetではOSが変わっても基本的には同じ挙動をしなければならないと思うですが、

    そうは言っても、現実的な限界というものがあります。

    例えば、フォントなんかは各PCによってインストール状況が異なります。

    なので、意外に思うかもしれませんが「すべてのPCで同じ表示を得ることを保証する」のは不可能なのです。

    今回の件についても、.NET がコントロールの描画に OS が提供する描画機構を利用している、という都合上致し方ない面があると思います。

    ということで、「サポートされている実行環境で実行可能である」からと言って、「細部の挙動まで詳細に一致していること」を過度に期待しないようにしましょう (^^;

    2010年6月25日 5:59
  • 返信ありがとうございます。

    >「サポートされている実行環境で実行可能である」からと言って、「細部の挙動まで詳細に一致していること」を過度に期待しないようにしましょう (^^;

    ・・・そういうものだと思って今後対応します。

    最初はOSの不具合なのでは?と思ってしまいました。過度に期待しすぎですね。

    2010年6月25日 13:02