RichTextBoxでスペルチェック

Published 18 May 09 06:03 PM | hiroyuk 

WPFにはSpellCheckクラスがあり、TextBoxでもRichTextBoxでもSpellCheck.IsEnabled="True"を加えれば、英語やドイツ語などのスペルチェッカーが使えるはずです。しかし、日本語環境ではそれだけではスペルチェッカーが有効になりません。

TextBox

TextBoxでは以下のように言語を設定すれば英語のスペルチェッカーが使えます。

<TextBox xml:lang="en-US" SpellCheck.IsEnabled="True"  />

RichRextBox

RichTextBoxの場合は話が少し複雑です。

RichTextBoxの中身はFlowDocumentで、ユーザーが入力すると内部にParagraphを作成します。Paragraphでは入力時のキーボード構成を見て言語が設定されるようです。ですから、キーボード構成がENになっていると、言語指定なしでも英語のスペルチェックが有効になります。

image

キーボードがJPのときは(日本語Windowsではこれが標準)、SpellCheck.IsEnabled="True"に加えて、以下のようなコードで、入力後にFlowDocumentの言語を”en-us”に指定しないと、英語のスペルチェックが有効になりません

private void myRichTextBox_LostFocus(
      object sender, RoutedEventArgs e)
{

  RichTextBox rtb = (RichTextBox)sender;
 
TextRange tr = new TextRange(rtb.Document.ContentStart,
                               rtb.Document.ContentEnd);
 
tr.ApplyPropertyValue(FrameworkElement.LanguageProperty,
                        "en-us");
}

Comments

No Comments
Anonymous comments are disabled

About hiroyuk

マイクロソフト㈱エバンジェリスト。北海道大学理学部物理学科卒。リアルタイム3Dグラフィックスを専門とし、グラフィックスやシェーダに関する技術文章を執筆・講演。 DirectX SDK日本語ドキュメントの開発に携わるとともに、Windows Presentation Foundation プログラミング(オーム社)、Game Programming Gemsシリーズ、リアルタイム レンダリング第2版(ボーンデジタル)、Texturing & Modeling, A Procedural Approach などを翻訳・監修、XAMLプログラミング(ソフトバンク クリエイティブ)を執筆。趣味は薪割り。

Search

This Blog

DirectX 情報

Silverlight 情報

Windows 情報

WPF 情報

並列コンピューティング情報

著書

Syndication

Page view tracker