C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: RichTextでドロップされた位置に文字列を追加したい


(過去ログ 55 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■30982 / inTopicNo.1)  RichTextでドロップされた位置に文字列を追加したい
  
□投稿者/ gd (1回)-(2009/01/11(Sun) 15:44:10)

分類:[VB.NET/VB2005 以降] 

こんにちわ。

VB.NET2008です

RichTexTBoxをフォーム上に配置して
RichTexTBox上にファイルをドロップするとファイルパスを追加する。
この時追加するファイルパスは、ドロップされた時の位置に追加する
と言う風にしたいのですが、文字列の最後の位置で悩んでいます。

コードはDragDropイベントに
Dim textPoint As Point = Me.rtTejunsho.PointToClient(New Point(e.X, e.Y))
Dim addPoint As Integer = Me.rtTejunsho.GetCharIndexFromPosition(textPoint)
を書いています

この時リッチテキストに、「ABC」という文字列があったとします。
Aの前(0文字目)にカーソルを持っていくとaddPoint は0を返します
これは良いのですが
Cの前(BとCの間)にカーソルを持っていくとaddPoint は2を返します
Cの後(一番最後)にカーソルを持っていくとaddPoint は2を返します

Cの前と後の値が同じ為に追加したい位置に、文字を追加することができずに困っています。
何が良い方法はないでしょうか?よろしくお願いします
引用返信 編集キー/
■30996 / inTopicNo.2)  Re[1]: RichTextでドロップされた位置に文字列を追加したい
□投稿者/ たくボン (135回)-(2009/01/12(Mon) 15:03:10)
No30982 (gd さん) に返信
> Cの前と後の値が同じ為に追加したい位置に、文字を追加することができずに困っています。
> 何が良い方法はないでしょうか?よろしくお願いします

時間あんまりないので試してないんですが、SendMessageを使うと判断できるかも。
EM_GETLINECOUNT
EM_LINEFROMCHAR
EM_LINEINDEX

VB5の時代に書いたやつだけど、参考になるかも。

http://hanatyan.sakura
.ne.jp/vbhlp/TextEdit.htm

#んー、なんかドメインで蹴られたから2行に分割(>_<)

RichTextは.NETになってからあまり触ってないからDragDropイベントでこれが使えるかどうかわからないけど。
もしダメならWin32APIのGetCursor, GetCursorPosの辺りも使えるかも(ただし座標計算と、描画されている文字列の座標を計算しないと難しいかもしれないけど。)
引用返信 編集キー/
■31052 / inTopicNo.3)  Re[2]: RichTextでドロップされた位置に文字列を追加したい
□投稿者/ gd (3回)-(2009/01/14(Wed) 13:49:43)
たくボンさんかなり遅れてすみません。

>時間あんまりないので試してないんですが、SendMessageを使うと判断できるかも。
SendMessageで実現することができました!ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -