[VB.net] Vanuit Multiline textbox selectnextcontrol

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Cai
  • Registratie: December 2001
  • Laatst online: 11-04 09:13
Situatie:
In een windows form applicatie staan 20 textfields onder elkaar. Door op de pijltjes toetsen te drukken kan de gebruiker naar boven en naar benenden scrollen.

code:
1
2
3
4
5
6
7
8
9
Select Case e.KeyCode
                Case 27 'ESC
                    Me.Close()
                Case 38 ' Omhoog
                    Me.SelectNextControl(Me.ActiveControl, False, True, True, True)

                Case 40 ' Omlaag
                    Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
End Select


Probleem
Dit werkt alleen met single-line textfield. Wanneer ik er een mltiline textfield tussenplaats werkt het niet meer. Het multiline textfield blijft geselecteerd.

Met debuggen getest of de case constructie goed blijft gaan. Dat is het geval. De volgende codes geprobeerd.

code:
1
SendKeys.Send("{TAB}")

Een tabtoets nadoen, want door op de TAB toets te drukken verlaat het textfield wel de select en gaat automatisch naar het volgende textfield. Dit werkt niet

code:
1
Textbox20.select()

Een aparte event listener aangemaakt voor het textfield. Ook dit werkt niet.

code:
1
textbox20.focus()

Helaas.

Wanneer ik de multiline property op false zet, werkt het als een trein. Het textfield moet echter (helaas) multiline zijn.

Acties:
  • 0 Henk 'm!

  • Face_-_LeSS
  • Registratie: September 2004
  • Niet online
Je moet aangeven dat de keydown afgehandeld is dmv:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
Select Case e.KeyCode
                Case 27 'ESC
                    Me.Close()
                Case 38 ' Omhoog
                    Me.SelectNextControl(Me.ActiveControl, False, True, True, True)
                    e.Handled = True

                Case 40 ' Omlaag
                    Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
                    e.Handled = True
End Select

[ Voor 67% gewijzigd door Face_-_LeSS op 09-12-2008 13:17 ]


Acties:
  • 0 Henk 'm!

  • Cai
  • Registratie: December 2001
  • Laatst online: 11-04 09:13
Face_-_LeSS schreef op dinsdag 09 december 2008 @ 13:17:
Je moet aangeven dat de keydown afgehandeld is dmv:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
Select Case e.KeyCode
                Case 27 'ESC
                    Me.Close()
                Case 38 ' Omhoog
                    Me.SelectNextControl(Me.ActiveControl, False, True, True, True)
                    e.Handled = True

                Case 40 ' Omlaag
                    Me.SelectNextControl(Me.ActiveControl, True, True, True, True)
                    e.Handled = True
End Select
Thank you _/-\o_

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Los daarvan vraag ik me een beetje af of deze situatie wel gewenst is; in oude DOS applicaties waren pijltoetsen nog wel gangbaar, maar in Windows applicaties is TAB de juiste toets om de focus naar de volgende control te sturen; interfacetechnisch en standaards-wise wil je daar eigenlijk liever niet aan rommelen en je gebruikers verkeerde zaken aanleren. Het is niet voor niets dat je "gekke dingen" moet gaan uithalen om het werkend te krijgen ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Met ^^.

Enige wat je kan implementeren is de tabvolgorde, moest die niet juist staan :)

Going for adventure, lots of sun and a convertible! | GMT-8