That's fine, as long as you have explicit line breaks on every line in your text.
If you have a multi-line text box without horizontal scroll (a.k.a. "Word Wrap"), it gets way more complicated. You have to use some Windows function calls to get the text metrics for your textbox, use the average character width and height values to calculate how wide a given line is to figure out how many lines you have for the font that your text box is using. Not for the faint of heart.
However, at the risk of making things WAY worse, there is a handy control called a "RichTextBox" that implements a method "GetLineFromChar". You can put a RichTextBox control (hidden, of course) with the same dimensions as your text box on your form, copy your text into the hidden RichTextBox, then use that method to get the line number you need. Then your code would look like this:
Private Sub Command2_Click()
Dim x As Integer
Me.RichTextBox1.Text = Me.Text1.Text
x = Me.RichTextBox1.GetLineFromChar(Len(Me.RichTextBox1.Text)) + 1
Form1.Caption = "Sockz-" & Str(x)
Granted, it's not pretty, and it does require an extra component when you deploy, but it works.
Oh, and by the way...the GetLineFromChar starts counting from line 0 (that's why you have to add 1).
For Each ctrl As Control In Me.Controls("pnlMainPanel").Controls
If ctrl.GetType Is GetType(System.Windows.Forms.Panel) Then
For Each subCtrl As Control In ctrl.Controls
If subCtrl.GetType Is GetType(System.Windows.Forms.TextBox) Then
If subCtrl.GetType Is ...