[vb6 sp5] Enter in Multiline textbox triggert click-event(.)

Pagina: 1
Acties:

  • DPLuS
  • Registratie: April 2000
  • Niet online
Complete Titel: Enter in Multiline textbox triggert click-event van default command-button.

Ik heb een multiline textbox en een command-button met default-property = true.
Als ik nu een ENTER geef in de textbox dan wordt het click-event gegenereerd van de default button. Dat wil ik dus niet!
Hoe kan ik via programmacode manipuleren dat een enter in een textbox gewoon een nieuwe regel toevoegt i.p.v. dat de default-button het click event krijgt?

Ik heb nu de form1.keypreview op true gezet en de volgende code gebruikt:
Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If ActiveControl = Text1 Then

    If KeyCode = vbKeyReturn Then
      
    KeyCode = 0
      
    SendKeys "^{ENTER}"
      
    End If

End If

End Sub


Alleen werkt dit niet, de default button wordt bij een ENTER nog altijd geactiveerd...

[ Voor 32% gewijzigd door DPLuS op 07-10-2004 11:21 ]


  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Bij een onfocus even even je default button Empty (null) maken en onleave ofzo weer setten.

Of in het keydown even gewoon een vbcrlf (\n) in de textbox appenden.

edit:

Verder geen idee, het zijn even wat suggesties... questa is geen vb6-man, wacht anders op reactie van RobIII
O-)

[ Voor 29% gewijzigd door pjvandesande op 07-10-2004 12:04 ]


  • DPLuS
  • Registratie: April 2000
  • Niet online
Heeft niemand toevallig een ander idee?
Misschien via subclassing o.i.d.?

Het enige dat ik dus wil is dat als het activecontrol die textbox1 is, de ENTER een newline geeft in de textbox, en niet het click event triggert voor de default button.

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Geen oplossing, wel een tip: Shift+Enter geeft een newline in een multiline textbox. Dus het kan in elk geval wel, maar ja, voor de gewone gebruiker is het natuurlijk nog steeds niet handig.

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 23:37

Sponge

Serious Game Developer

Hm, ik dacht het met een simpele boolean wel op te lossen. Niet dus. Interessant probleem :).

  • pjvandesande
  • Registratie: Maart 2004
  • Laatst online: 21-05 14:59

pjvandesande

GC.Collect(head);

Gewoon met die workaround die ik al eerder gaf.
Dit werkt namelijk wel, even snel getest.

[ Voor 32% gewijzigd door pjvandesande op 08-10-2004 16:35 ]


  • DPLuS
  • Registratie: April 2000
  • Niet online
Tja, waarschijnlijk zit er inderdaad niets anders op.
Het probleem is dat de meeste mensen niet snappen dat ze CTRL+ENTER kunnen ingeven in het tekstvak.
Het enige dat ik betreur in de methode die bovenstaande auteur gaf, is dat als ik de default property op false zet, het dikke zwarte randje verdwijnt van de commandbutton.
Misschien dat iemand anders daar nog een of andere API-call voor heeft?

  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 23:37

Sponge

Serious Game Developer

http://support.microsoft....aspx?scid=KB;EN-US;113328

Ik stop nu ook met zoeken :). Ik zat nog wat te klooien met tabstop e.d. :)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Je kunt het afhandelen in het onclickvent zelf:
code:
1
2
3
4
5
6
7
8
9
If activecontrol.name="Text1" Then
    With Me.Text1
        pos = .SelStart
        .Text = Left(.Text, pos) & vbCrLf & Right(.Text, Len(.Text) - .SelStart)
        .SelStart = pos + 2
    End With
    exit sub
Endif
    bla /etc

[ Voor 38% gewijzigd door Lustucru op 09-10-2004 01:20 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1