DOBON.NET DOBON.NETプログラミング掲示板過去ログ

Windows7でアクセスキー(ニーモニック)の表現が消えてしまっている

環境/言語:[Windows 7、.NET 4.0、VS2010]
分類:[.NET]

こんにちわ。

VS2010、.NET 4.0のC#にて、Windowsアプリを作っています。

ContextMenuを使って右クリックされた場合の、メニューを作成しましたが、
Windows7だとニーモニックの表示がいまいちになってしまいます。

たとえば、以下のようなメニューがあったとします。

========
Cut
  ~
Copy
~
Paste
~
========

WindowsXPでは、上述のように、右クリックで表示されるメニューには、
設定しておいたニーモニックが、下線付きアルファベットで表現されます。

Windows7では、これが消えてしまいました。

以下のようにフォルダオプションを修正することで、直るようです。

http://snow-white.cocolog-nifty.com/first/2008/05/post_1d4b.html

微妙なので、Windows7でもフォルダオプション等の設定変更をせずに、
標準で、ニーモニックを下線付きアルファベットで表現したいのですが、
何か方法はないでしょうか?

ご教授いただければと思います。
■No30494に返信(ポチさんの記事)

Windows7の標準スタイルなのだからそうなるのは仕方ないと思います。
他のアプリでもそうだし。


どうしても設定に準じない表示にしたければ自分で描画すると良いと思います。
■No30494に返信(ポチさんの記事)
> Windows7では、これが消えてしまいました。
キーボードで処理しようとした場合は表示されます。
(メニューキーや Alt キーを押すなど)


> 以下のようにフォルダオプションを修正することで、直るようです。
その設定は今に始まった話では無く、Windows 2000 であっても同様でしたよね。
OS としての初期設定値が逆だったというだけで。

この場合、アンダーバー以外にも、アクティブコントロールのフォーカス枠にも
違いが生じますがそれは問題ないのでしょうか?


> 微妙なので、Windows7でもフォルダオプション等の設定変更をせずに
OS 側の仕様として、受け入れるか設定を変更するかの 2 択だと思います。


> ご教授いただければと思います。
(^_^;)

------

# ニーモニックキーと言えば、.NET 以前の旧い VB では、
#  Label1.Caption = "ファイル(&F&フ)"
# のようにすることで、OS コンパネ設定に応じて、
# アルファベットな「ファイル(F)」での表示と
# カナ(半角)な「ファイル(フ)」が自動的に切り替わる機能が
# 搭載されていたんですよね。――今の VB には関係ない話ですが。
魔界の仮面弁士さん
shu さん

早速の回答、ありがとうございます。

自作するか、あきらめるかの2択ということですね。

自分には自作するだけの技術力がないので、あきらめることになりそうです。。。。

む。。無念です。。。

自作アプリの仕様を考える際に、Officeアプリを参考にさせてもらっています。
(Winアプリのデファクトスタンダードだと思うので)

ニーモニックを下線で表現するというのは、OfficeアプリはWin7でも標準で実装されているので、自作アプリもそうあったほうが使いやすいかな。。って思いました。

うーん。。。

こちらでも、もう少し調べてみます。
(今度は自作できるのかの線で)

何か方法がありそうだったら、返信させてください。

よろしくお願いします。
■No30497に返信(ポチさんの記事)

ニーモニックをOwnerDrawする例です。

    Private Sub Label1_Paint(sender As Object, e As System.Windows.Forms.PaintEventArgs) Handles Label1.Paint
        Dim g = e.Graphics
        Dim sf As New StringFormat
        sf.HotkeyPrefix = Drawing.Text.HotkeyPrefix.Show

        g.Clear(Color.White)
        g.DrawString(Label1.Text, Label1.Font, Brushes.Black, New Point(0, 0), sf)
    End Sub

DOBON.NET | プログラミング道 | プログラミング掲示板