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

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

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

Re[1]: テキスト先頭の列番号を取得したい


(過去ログ 129 を表示中)

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

■76740 / inTopicNo.1)  テキスト先頭の列番号を取得したい
  
□投稿者/ Cyma (1回)-(2015/08/08(Sat) 08:25:23)

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

[環境]VisualStudioCommunity2013, Win8.1

VB.NETでのプログラミング初心者です。
練習も兼ねてテキストエディタを制作しています。

サクラエディタやTeraPadの様に、テキストボックスに対して行番号と列位置を表示させたいと考えました。

行番号の方は以下のやり方で、「画面内に表示されているテキストの、先頭の行番号」を取得し、
それをもとに計算・表示すればいいことはわかりました。
 Dim row As Integer = SendMessage(TextBox1.Handle, EM_GETFIRSTVISIBLELINE, 0, 0) + 1

同じようなやり方で、「画面内に表示されている部分のテキストの、先頭の列の値」を取得する方法はないでしょうか?

引用返信 編集キー/
■76741 / inTopicNo.2)  Re[1]: テキスト先頭の列番号を取得したい
□投稿者/ 魔界の仮面弁士 (439回)-(2015/08/08(Sat) 11:51:36)
No76740 (Cyma さん) に返信
> 同じようなやり方で、「画面内に表示されている部分のテキストの、先頭の列の値」を取得する方法はないでしょうか?

現在の入力位置(caret)の行と列、ではなく、
表示されている一番上の行(EM_GETFIRSTVISIBLELINE)と
表示されている一番左の列を知りたい、ということでしょうか。

であれば、GetCharIndexFromPosition メソッドで左上の座標(0, 0)を指定すれば、
現在左上にある文字の番号が分かるので、そこから
GetCharIndexFromPosition メソッドで行番号を調べたり、あるいは
GetFirstCharIndexFromLine との差から列番号を調べたりできると思います。

先頭の文字位置を調べたいのではなく、現在の位置に対して調べたい場合は、
GetCharIndexFromPosition の代わりに SelectionStart を起点にしてみてください。
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -