Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 927
  • Last Modified:

Enter key input on multiline VB.TextBox

I have a VB.TextBox with multiline = true and I need the control to allow a user to input a carriage return in the text box.

I am having trouble capturing the enter key input (KeyDown, KeyUp, KeyPress... and KeyPreview = true).  Any help would be appreciated.
0
hyoon
Asked:
hyoon
  • 3
  • 3
  • 2
  • +6
1 Solution
 
JonFish85Commented:
Private Sub Form_KeyPress(KeyAscii As Integer)
  Select Case KeyAscii
    Case vbKeyReturn
      Text1.SelText = vbCrLf
  End Select
End Sub

is that what you're looking for?
0
 
VincentLawlorCommented:
Try

In the KeyPress

If KeyAscii = Chr(10) Then
        KeyAscii = 0
        Text1.Text = Text1.Text + vbCrLf
End If

Vin
0
 
JonFish85Commented:
but what happens when the cursor isnt at the end of the textbox? say its in the middle of the text, you would get the textboxtext + vbcrlf
0
Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

 
hyoonAuthor Commented:
Here's my dilemma...

The enter key doesn't activate the keypress event.  The TextBox is contained in a PictureBox.  I've tried Form_KeyPress, Pic_KeyPress, and Txt_KeyPress, to which none of these events would be called when I press the enter key (the events do get called on other key presses).

Any ideas?
0
 
hyoonAuthor Commented:
Here's my dilemma...

The enter key doesn't activate the keypress event.  The TextBox is contained in a PictureBox.  I've tried Form_KeyPress, Pic_KeyPress, and Txt_KeyPress, to which none of these events would be called when I press the enter key (the events do get called on other key presses).

Any ideas?
0
 
JonFish85Commented:
try it with KeyDown() maybe?
0
 
VincentLawlorCommented:
Sorry John you are correct.

Just tried what you are doing and I get the CRLF whenever I press enter in the Text box regardless of the fact that it's in a picture box.

Vin.

0
 
Arthur_WoodCommented:
In order to get true MULTI-line entry in a textbox which has Multiline=True, the Enter key MUST be entered as Control-Enter (Control Key AND Enter Key, pressed together).
0
 
aranaCommented:
i am trying this WITHOUT keypreview under TEXTBOX keypress and works perfectly (under w2k) any issues different from win98?


Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SelText = vbCr   '(vbCrLf added one more line)
End If
End Sub
0
 
aranaCommented:
tha was using the textbox inside picturebox with win2k
vb6 sp5

form.keypreview=FALSE!!!
0
 
amebaCommented:
You have command button with Default property set to True.
When user enters your textbox, change Default property to False...

Private Sub TextBox_GotFocus()
     AllowEnterKey True
End Sub

Private Sub TextBox_LostFocus()
     AllowEnterKey False
End Sub

Public Sub AllowEnterKey(Allow As Boolean)
     ' set/reset property Default
     cmdOK.DEFAULT = Not Allow
End Sub
0
 
bppraveen001Commented:
Hello hyoon,
     Even I too faced the same problem what you have faced, while building my application. What you can do is just put one lable below your Multiline text box saying that "Use Ctrl + Enter key to enter text in Multiple lines" (this is a inbuilt feature in vb that you can use while entering multiple lines text in a Text box having Multiline set to True) When you press Ctrl + Enter when you are in Multi line text box the Click Event of the Command Button will not generated even though the Default property of the Command button set to True.
     But if you follow ameba's code you should declare one more boolean variable to keep track of in which control or text box user is there and you need to keep changing the flag values and it may take more time to execute also...

bpp
0
 
inthedarkCommented:
Similar to ameba but simple.

In Form Declarations:

Dim NoEnter as Boolen


Sub Text1_GotFocus()
' In all Multiline
NoEnter=True
End Sub


Sub Text1_LostFocus()
' In all Multiline
NoEnter=False
End Sub

In the form Keypress

e.g.

Sub Form1_KeyPress(KeyAscii, etc......
If NoEnter and KeyAscii=13 Then Exit Sub

' Now do normal processing


0
 
Valliappan ANCommented:
I don't know, if inthedark's comments would go ok, say if the user presses ENTER key, will the text box keypress event occur or the Default Command button click will occur, and what is the sequence.

Also, this could cause some LostFocus/SetFocus problem in VB. Not sure about this.

Or else, if inthedark's comments works, then you can try this also:(It is a compilation, of some of the above comments).

Sub Text1_KeyPress()
 If Screen.Activecontrol.Name = "Text1" And KeyAscii = 13 Then
    Text1.SelText = vbCr   '(vbCrLf added one more line)
 End If
End Sub

Cheers
0
 
Valliappan ANCommented:
"Sub Text1_KeyPress()" change to
Sub Form_KeyPress()
0
 
bppraveen001Commented:
Hello hyoon,
    There is no need to write any code to enter text in multiple lines in a text box for which Multiline Property set to True, try by pressing Ctrl and Enter when you want to enter text in multiple lines.
0
 
hyoonAuthor Commented:
Thank you for everyone's answers.  The main problem I was having was the fact that I had a command button with default = true that prevented me from adding carriage returns without holding down ctrl.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 3
  • 3
  • 2
  • +6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now