Solved

Enter key input on multiline VB.TextBox

Posted on 2001-07-11
17
889 Views
Last Modified: 2012-05-04
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
Comment
Question by:hyoon
  • 3
  • 3
  • 2
  • +6
17 Comments
 
LVL 6

Expert Comment

by:JonFish85
ID: 6275215
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
 
LVL 4

Expert Comment

by:VincentLawlor
ID: 6275218
Try

In the KeyPress

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

Vin
0
 
LVL 6

Expert Comment

by:JonFish85
ID: 6275225
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
 

Author Comment

by:hyoon
ID: 6275231
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
 

Author Comment

by:hyoon
ID: 6275236
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
 
LVL 6

Expert Comment

by:JonFish85
ID: 6275253
try it with KeyDown() maybe?
0
 
LVL 4

Expert Comment

by:VincentLawlor
ID: 6275254
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
 
LVL 44

Expert Comment

by:Arthur_Wood
ID: 6275296
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
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 
LVL 10

Expert Comment

by:arana
ID: 6275370
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
 
LVL 10

Expert Comment

by:arana
ID: 6275371
tha was using the textbox inside picturebox with win2k
vb6 sp5

form.keypreview=FALSE!!!
0
 
LVL 15

Accepted Solution

by:
ameba earned 100 total points
ID: 6275399
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
 

Expert Comment

by:bppraveen001
ID: 6275804
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
 
LVL 17

Expert Comment

by:inthedark
ID: 6275970
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
 
LVL 9

Expert Comment

by:Valliappan AN
ID: 6276056
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
 
LVL 9

Expert Comment

by:Valliappan AN
ID: 6276067
"Sub Text1_KeyPress()" change to
Sub Form_KeyPress()
0
 

Expert Comment

by:bppraveen001
ID: 6279438
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
 

Author Comment

by:hyoon
ID: 6287910
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

Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

Join & Write a Comment

When trying to find the cause of a problem in VBA or VB6 it's often valuable to know what procedures were executed prior to the error. You can use the Call Stack for that but it is often inadequate because it may show procedures you aren't intereste…
Background What I'm presenting in this article is the result of 2 conditions in my work area: We have a SQL Server production environment but no development or test environment; andWe have an MS Access front end using tables in SQL Server but we a…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now