テキストボックスの改行に関して
- 題名: テキストボックスの改行に関して
- 著者: beanjam
- 日時: 2004/12/09 13:18:06
- ID: 7965
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: Re[1]: テキストボックスの改行に関して
- 著者: 深山
- 日時: 2004/12/10 10:54:29
- ID: 7979
- この記事の返信元:
- この記事への返信:
- ツリーを表示
- 題名: ありがとうございました
- 著者: beanjam
- 日時: 2004/12/12 19:48:21
- ID: 8008
- この記事の返信元:
- この記事への返信:
- ツリーを表示
分類:[.NET]
いつもお世話になっております。
beanjam@超初心者です。
テキストボックスで、Word WrapプロパティーをTrueにしていると
テキストボックスに入力すると、入力文字列が改行して提示されますよね。
このとき、テキストボックス上でカーソルが2行目にあるように見えても
改行文字を挿入したわけではないので、
Line()の値は、0となる(1行目として処理される)、
ということが起こりますよね。
これを、Ward WrapがTrueのテキストボックス上で、
3行目にある(ように見える)カーソルが、
実際にLine(2)にあるように処理することは可能でしょうか??
可能でしたら、その方法についてアドバイスを戴ければありがたいのですが・・・
質問の意図がわかりにくくて申し訳ないのですが、よろしくお願いいたします。
というのも、現在、テキスト入力用のモードと
カーソル移動のためのモードと2つのモードがある
テキストボックスを作成していて、
カーソル移動モードの時には”j”キーを押すと、
カーソルがひとつ下に移動するようにしたいと思っています。
(“j”キーに“↓”矢印キーの働きをさせる)
最初、一行の文字数を20と考えて
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As
System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim s = TextBox1.SelectionStart ’sはカーソル位置
If e.KeyChar = "j" Then ’jキーが押されたら
TextBox1.SelectionStart = s + 20
’↑カーソルが20文字分移動する
e.Handled = True
End If
End Sub
としていたのですが、Word Wrapでの改行は、
句読点や単語の切れ目になるところを避けて改行するので
厳密に一行が20字で表示されることがなく、
少しずつずれていってしまいます・・・
そこで、行数を取得してカーソル位置を変更する必要があると考えたのですが
最初に述べたように、改行文字を挿入しているわけではないので、
プログラム上で行数を操作できずに詰まっている状況です。
長々と申し訳ございません。
説明のしかたが難しくて、文章もわかりにくいと思うのですが
何かアドバイスがありましたらよろしくお願いいたします。