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

RichTextBoxでのカーソル位置取得について

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

度々お世話になります てんてんです。

RichTextBoxでのカーソル位置取得について

現在SelectionStartにて取得しているのですが
「あいう」とある場合、「う」から「あ」に向かって選択した場合
当然のことながらうまく取得できません。

現在のカーソル位置をうまく取得する方法をご存知の方が
居られましたら指導お願い致します。

それでは 失礼します。
過去ログより
#参考にならなかったから質問されたのかも知れませんが一応

RichTextBoxで選択文字を編集
http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=7668&no=0&KLOG=1
■No8505に返信(深山さんの記事)
>  過去ログより
> #参考にならなかったから質問されたのかも知れませんが一応
>
> RichTextBoxで選択文字を編集
> http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=7668&no=0&KLOG=1

アドバイス有難う御座います。

深山の情報通りGetCaretPosでほぼOKでした。

が、
EOFの直前の処理とEOFだけの行の場合
及び\r\nを選択状態にした場合にうまく拾えませんでした。

SelectionStartと組み合わせてもうまくいかないし・・・

GetCaretPosで、文字サイズを固定化して
割り出すしか手は無いのかなぁ

何かきっかけになる情報って無いでしょうか
質問ばかりですみません。

それでは 失礼致します。
深山様

お詫び

> 深山の情報通りGetCaretPosでほぼOKでした。

呼び捨てにする気はまったくありませんでしたので
無礼をお許しくださいませ。

それでは 失礼致します。
> 呼び捨てにする気はまったくありませんでしたので
> 無礼をお許しくださいませ。

 全く気に障らなかったと言えば嘘になりますけど(笑)、意図的なものだとは思ってませんでしたから。
お気になさらずに(^^)


 閑話休題。

> EOFの直前の処理とEOFだけの行の場合
> 及び\r\nを選択状態にした場合にうまく拾えませんでした。

 改行コードを選択したときの問題は認識してましたが、文末でもでしたか。検証ありがとうございます。

 さて。
 うまくいかないことがあるという前提で、どういった問題が起こるのでしょうか?
もちろん色々とあるのでしょうが、それを一つ一つ潰していけば良いのではないかと。

 また、
#この内容、私には理解できなかったのですが(汗)
> GetCaretPosで、文字サイズを固定化して
> 割り出すしか手は無いのかなぁ
のように既に回避策が存在するのでしたら、先ずはそれをお試しになられては?
 その上で不都合があれば、的を絞って別途質問されたほうがレスも付き易いと思いますよ。


 何を目的とし、どういった用途で、どんなタイミングでその値を必要としているのかも判りませんし、これ以上はお役に立てそうにありませんm(__)m


===============================================================================
 自分で管理するというのは選択肢に含まれていないようでしたけど、他の方の参考にはなるかも知れないので簡易な方法を一つ。

1. Shift キーまたはマウスの右ボタンが押下されたとき、 SelectionLength が 0 であれば SelectionStart の値を保持する。
2. キャレット位置を必要とするとき、 1. で保持した値と SelectionStart の値が同じであれば SelectionStart と SelectionLength の和を、異なっていれば SelectionStart の値をそのまま用いる。

#コードから直接 SelectionStart 、 SelectionLength プロパティの値を変更したり、 Select 、 SelectAll メソッドを使用したりしたときのことは考慮に入れてません。
#まともな動作確認はしてないので、他にも穴があるかも(^_^;)

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