GUIコントロールのキャプションがあり、それを単純なテキスト文字列に変換したいと思います。具体的には、アクセラレータのメタ文字を削除したいと思います。
例(例ではWinFormsを想定しています):
- メタ文字の単一の出現を取り除きます:
&Yes
になりますYes
- ダブルオカレンスをシングルに変換:
Income && Expense
になりますIncome & Expense
私のコードは、Windowsフォーム構文(アクセラレータのメタ文字がどこにあるか)を扱っているのか、&
WPF(それがどこにあるのか)を扱っているのかを認識します_
。ただし、これはバックエンドコードに含まれているため、WinFormsまたはWPFライブラリ関数に依存したくありません。コア(非GUI)BCLアセンブリを使用してこれを行う必要があります。(そしてその時点で、WinFormsで機能するものはすべて、WPF用に変更するのは簡単だと思います。)
これを行うにはいくつかの方法が考えられますが、どれが最も簡単かは明確ではありません。
この「シングルの場合はメタ文字を削除し、ダブルの場合はデダブル」を実装する最も簡単な方法は何ですか?
更新: WinFormsとWPFはどちらも基本的に同じように処理されると思っていましたが、そうではないことがわかりました。WinFormsは、文字列の最後にある1つのメタ文字を削除します(Foo&
になりますFoo
)が、WPFは削除しません(Foo_
残りますFoo_
)。両方に対応する回答のボーナスポイント。