- PR -

テキストボックスの行数制限

1
投稿者投稿内容
シルバ
会議室デビュー日: 2006/09/22
投稿数: 19
投稿日時: 2007-03-13 21:17
バージョン:VB2005 OS:WindowsXP

TextBox.Multiline=True
TextBox.WordWrap=False
複数行で折り返しありのテキストの入力制限をしているのですが、
ある行数までいくと入力できないようにするにはどうしたらいいですか?
TextBox.Lines.Lengthで行数は取れますが、折り返しも含めた行数が知りたいんです。

よろしくお願いします。

ダッチ
大ベテラン
会議室デビュー日: 2005/10/31
投稿数: 113
投稿日時: 2007-03-13 23:05
引用:

シルバさんの書き込み (2007-03-13 21:17) より:
バージョン:VB2005 OS:WindowsXP

TextBox.Multiline=True
TextBox.WordWrap=False
複数行で折り返しありのテキストの入力制限をしているのですが、
ある行数までいくと入力できないようにするにはどうしたらいいですか?
TextBox.Lines.Lengthで行数は取れますが、折り返しも含めた行数が知りたいんです。

よろしくお願いします。


折り返しがあるのであれば、
TextBox.WordWrap = True ですよね。

折り返しを含めた行数の取得は、
Win32API の SendMessage 関数を使用して、
EM_GETLINECOUNT = 0x00BA を渡してやれば取得できそうです。
シルバ
会議室デビュー日: 2006/09/22
投稿数: 19
投稿日時: 2007-03-14 14:47
すみません。TrueとFalseを書き間違えてました。

<System.Runtime.InteropServices.DllImport("User32.Dll")> _
Private Shared Function SendMessage(ByVal hWnd As IntPtr, _
ByVal Msg As Integer, _
ByVal wParam As Integer, _
ByVal lParam As Integer) As Integer
End Function

Private Const EM_GETLINECOUNT As Integer = &HBA

SendMessage(TextBox1.Handle,EM_GETLINECOUNT, 0&, 0&)

上記のコードで一応制限できました。KeyDown,KeyPressでの処理がうまくいってないのでまだ思い通りの動きをしてくれませんが…(笑)もう少し考えて制御してみます。

ダッチさん、ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)