テキストボックスを2行だけ入力できるようにするには?


きんぐ  2010-11-21 15:38:43  No: 147230  IP: [192.*.*.*]

テクストボックスをマルチライン=trueに設定します。

①入力可能行数を2行だけにしたい
②1行の入力数を10文字にしたい。

どうするのが良いでしょうか?

テキストを2個で制御するのが良いのでしょうか?

編集 削除
VBレスキュー(花ちゃん)  URL  2010-11-22 12:33:18  No: 147231  IP: [192.*.*.*]

色々な方法がありますが、その程度の事を調べるなら、処理速度も影響しないので、単純に
改行文字の数を調べれば行数が解るし、1行目の文字数と2行目の文字数を調べればすむかと。
例えば、下記のように、後は貴方の仕様に合せて工夫して下さい。

Private Sub Text1_Change()
   Dim Mytxt As Variant
   Dim i As Long
   Mytxt = Split(Text1.Text, vbCrLf)
   For i = LBound(Mytxt) To UBound(Mytxt)
      If Len(Mytxt(i)) > 10 Then
         MsgBox "10文字以上の入力はできません。"
         Mytxt(i) = Left$(Mytxt(i), 10)
      End If
      If i = 1 Then
         Text1.Text = Mytxt(0) & vbCrLf & Mytxt(1)
      ElseIf i > 1 Then
         MsgBox "2行以上の入力はできません"
         Exit For
      End If
   Next i
End Sub

編集 削除
VBレスキュー(花ちゃん)  2010-11-22 13:00:38  No: 147232  IP: [192.*.*.*]

失礼しました。 .NET の方でしたね。

Private Sub TextBox1_TextChanged(ByVal sender As System.Object, _
                        ByVal e As System.EventArgs) Handles TextBox1.TextChanged
   Dim txtLine() As String
   txtLine = TextBox1.Lines
   For n As Integer = 0 To txtLine.GetUpperBound(0)
      If txtLine(n).Length > 10 Then
         MessageBox.Show("10文字以上の入力はできません。")
         txtLine(n) = txtLine(n).Substring(0, 10)
      End If
      If n = 1 Then
         TextBox1.Text = txtLine(0) & vbCrLf & txtLine(1)
      ElseIf n > 1 Then
         MessageBox.Show("2行以上の入力はできません")
         Exit For
      End If
   Next
End Sub

編集 削除