--------------- Private Const EM_GETLINECOUNT = &HBA Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _ (ByVal hWnd As Integer, ByVal MSG As Integer, _ ByVal wParam As Integer, ByVal lParam As Integer) As Integer
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
Dim line As Integer
'全行数を取得する line = SendMessage(Me.TextBox1.Handle, EM_GETLINECOUNT, 0, 0)
If line > 7 Then '7行を超えるのでキャンセル e.Handled = True End If
End Sub --------------- 動きの問題として、 ・8行目にいくことが出来てしまう(ただし文字は入力できない) ・キーイベントで判定しているため、7行以上入力状態では一切の 操作ができない(バックスペース、Delteなども)
Private Sub TextBox1_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress
If e.KeyChar = Chr(Keys.Enter) And TextBox1.Lines.Length >= 7 Then
e.Handled = True
End If
End Sub
If line > 7 Then
'7行を超えるのでキャンセル
TextBox1.Text = TextBox1.Text.Remove(intIndex, TextBox1.Text.Length - intIndex)
TextBox1.SelectionStart = TextBox1.Text.Length
End If
End Sub
----------
Dim sjisEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
Dim inputByteCount As Integer = sjisEncoding.GetByteCount(Me.Text)
----------