TextBox(RichTextBox)のLinesプロパティについて


■これまで筆者は触れることの無かったLinesプロパティですが、 簡単な変換ツールを作る際、予想外に悪戦苦闘させられたので、ここに記します。 このプロパティは配列であり、For文等を使って取り出すことができます。 ならば!?書き換えることも可能では・・・と、コーディングしてみたのですが・・・ 何の変化もなくコーディングが間違っているのではないかと見直したり、調べてみたり・・・ 結果、ようやく見つけたのが関連リンクのサイト、大変わかり易く記述されており納得です。 要は、LinesプロパティはTextBox(RichTextBox)の行のコピーにすぎず、変更を反映する場合は、 配列を丸ごと戻せと・・・しかしエディタの様に、行の挿入・削除等の動作にも使えそうですね? ただ、配列を戻した時点で、SelectionStartやSelectionLengthプロパティはリセットされてしまいますが・・・

■ボヤいてみても仕方ないので・・・作業の際に得とくしたメソッドをひとつ

 With TextBox
  Dim intLine As Integer = .GetLineFromCharIndex(.SelectionStart) + 1
 End With
上記の様に記述すると、変数intLineに現在の行番号を取得することができます。 その際、WordWrapプロパティにより行が折り返していた場合、見た目の行番号になりますので、ご注意を


関連リンク(情報源)

http://homepage1.nifty.com/rucio/main/dotnet/ClassLibrary/L006_System.Windows.Forms.TextBox.htm

TOP ▲