2013年2月20日水曜日

【WPF】RichTextBoxでショートカットキーを抑制する


RichTextBox祭り.
RichTextBox(System.Windows.Controls)は
配置するだけでショートカットがいろいろ設定される.
例えばCtrl + Bで太字になるし,
Ctrl + Iで斜体になる.
一覧は
http://msdn.microsoft.com/ja-jp/library/system.windows.documents.editingcommands.aspx
にある.

さて,ここで困ったのが
勝手にショートカットキーが登録されているから
必要もない…というかUI的にあってはいけないコマンドが存在し得ること.
リスト表示とか上付き下付きは存在してほしくない場合もあるのだ.
しかし,標準でCtrl + Shift + Nでリスト化されてしまう.

今回はこれを抑制する.
使用するのはRichTextBox.CommandBindingsというプロパティ.

System.Windows.FormsのほうのRichTextBoxにはShortcutsEnabledなんてプロパティがあったりするが,
Controlsのほうには存在しないのだ.

RichTextBoxのオブジェクトを_richTextBoxとして
このメソッドを呼び出してあげる.

TextBox_CommandHookイベントは空メソッドでいい.

BoldやItalic,Underlineを別扱いしているのは
後々必要になった時に拒否リストから除外して
ショートカットを復活させるため.
必要がないのであれば他と同じようにしてもいい.

後々必要になった場合の除外の仕方は
である.

ショートカットをフックするため,そのコマンドで別の動作をさせることもできる.
本来はそのためのものだな.

0 件のコメント:

コメントを投稿