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

RichTextBox内の文字のフォント情報をSelectせずに取得

環境/言語:[C#]
分類:[.NET]

リッチテキストボックス内のマウスカーソル直下の一文字に関する
フォントとカラーの情報はどうやって取得するかで悩んでます。
今は下のようにわざわざ1文字をSelectしてるのですが、
テキストボックス内で選択状態になってしまい見栄えがよくないです。
Selectせずにフォント情報を取得するいい方法はないでしょうか。
よろしくお願いします。

private void richTextBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
Point mouse = Control.MousePosition;
Point p = richTextBox1.PointToClient(mouse);
int charIndex = richTextBox1.GetCharIndexFromPosition(p);
richTextBox1.Select(charIndex,1);
if(richTextBox1.SelectionColor == Color.Green)
{
MessageBox.Show("緑を発見しました");
}
■No14842に返信(風太郎さんの記事)
> リッチテキストボックス内のマウスカーソル直下の一文字に関する
> フォントとカラーの情報はどうやって取得するかで悩んでます。

RTF を直接解析するとか。


_________________________________________________________________________
じゃんぬ Microsoft MVP for Visual Developer - C#
  http://jeanne.wankuma.com/
  http://blogs.wankuma.com/jeanne/
>
> RTF を直接解析するとか。
>

返信ありがとうございます。
リッチテキストの解析ですか。リッチテキスト自体が結構難しそうですね><
いろいろ検索して調べてみたのですが、
リッチテキストの構造を扱った資料があまりないもので・・
でも構造が理解できれば思ってることはできそうです。
もうちょっと頑張って調べてみたいと思います。ありがとうございました。
一時的に文字を選択したことを隠す方法はあると思います。RichTextBoxのSuspendLayoutで出来るかもしれませんし、もし出来なければ、WM_SETREDRAWメッセージで再描画をしないようにできると思います。

ちなみに、RTFに関する資料はここにあります。

Rich Text Format (RTF) Specification, version 1.6
http://msdn.microsoft.com/library/en-us/dnrtfspec/html/rtfspec.asp
> 一時的に文字を選択したことを隠す方法はあると思います。RichTextBoxのSuspendLayoutで出来るかもしれませんし、もし出来なければ、WM_SETREDRAWメッセージで再描画をしないようにできると思います。

WM_SETREDRAWメッセージのほうでうまくいきました。
あと今さら気づいたのですが、Selection関係はテキストボックス内で文字が
選択状態にない場合、カーソルの位置にある文字を対象にするようです。
(MSDNの説明をよくみるとそう書いてありました^^;)
いずれにしても、複数の文字を選択しなければならない状況もあるので、
WM_SETREDRAWでいこうと思います。RTFの資料とあわせて、ありがとうございます。
■No14869に返信(風太郎さんの記事)
>>一時的に文字を選択したことを隠す方法はあると思います。RichTextBoxのSuspendLayoutで出来るかもしれませんし、もし出来なければ、WM_SETREDRAWメッセージで再描画をしないようにできると思います。
>
> WM_SETREDRAWメッセージのほうでうまくいきました。
> あと今さら気づいたのですが、Selection関係はテキストボックス内で文字が
> 選択状態にない場合、カーソルの位置にある文字を対象にするようです。
> (MSDNの説明をよくみるとそう書いてありました^^;)
> いずれにしても、複数の文字を選択しなければならない状況もあるので、
> WM_SETREDRAWでいこうと思います。RTFの資料とあわせて、ありがとうございます。
解決済み!

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