• ベストアンサー

テキストボックスでの行の認識

テキストボックスで2行以上入力不可にしたいんですが、方法が分かりません。 単に改行を含むのならEnterキーの2回目を押せなくすればいいのですが、テキストボックスって端までいくと自動的に2行になりますよね。この場合は改行コードが入ってないんです。だから単純にEnterキーの制御だけでは出来ないんです。 なにか良き方法が有れば教えていただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#5584
noname#5584
回答No.2

> しかし、2行目は入力できるようにしたいのです。 質問の文章では「テキストボックスで2行以上入力不可にしたい」と書いてありますが? 「以上」には基準点 ( この場合は、「2」 ) も含まれます。 # ことばの使い方が正しくないと、真意が伝わらないと思いますが・・・。 > だから単純にEnterキーの制御だけでは出来ないんです。 下記でできます。(VB6.0) Private Sub Text1_Change() Dim rPos As Long Dim lPos As Long lPos = InStr(Me.Text1.Text, vbCrLf) If lPos <> 0 Then rPos = InStrRev(Me.Text1.Text, vbCrLf) If lPos <> rPos Then Me.Text1.Text = Left$(Me.Text1.Text, rPos - 1) _ & Mid$(Me.Text1.Text, rPos + 2) Me.Text1.SelStart = Len(Me.Text1.Text) End If End If End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = vbKeyReturn Then If InStr(Me.Text1.Text, vbCrLf) <> 0 Then KeyAscii = 0 End If End If End Sub ※ _Changeイベントはクリップボードからのコピペ対策。 コピペなし、キーボードからの入力のみであれば、_KeyPressイベントのみで可。 ※ 改行コードを含まない、表示上の折り返しが気に入らない場合は、入力可能文字列長に制限を掛ける必要があります。

参考URL:
http://dictionary.goo.ne.jp/search.php?MT=%B0%CA%BE%E5&kind=jn&mode=0
peugeot
質問者

お礼

>「以上」には基準点 ( この場合は、「2」 ) も含まれます。 おっしゃる通りですね。今後、気をつけます。 いろいろとありがとうございました。

その他の回答 (1)

noname#5584
noname#5584
回答No.1

MultiLineプロパティをFalseにすれば、改行は入りません。

peugeot
質問者

補足

説明不足ですみません。 確かにMultLineプロバディを変更すれば改行は入りません。しかし、2行目は入力できるようにしたいのです。なので、MultLineプロバディを変更する方法は無理なんです。

関連するQ&A