[vb.net] keys afvangen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

Anoniem: 32938

Topicstarter
ik zit met het volgende probleem, in mijn programma wil ik elke key afvangen, normaal deed ik dit in vb6 met de win32 APIs, getkeystate en getkeystateasync zoiets in ieder geval. Nu probeer ik hetzelfde in .net te doen om een algemene routine in mijn form keypress te zetten. dus ook al als er een toets in een textbox ingedrukt word, wil ik deze nog afvangen...

de code voor de form is als volgt.

Visual Basic:
1
2
3
4
5
 Private Sub frmRun_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MyBase.KeyPress
        If e.KeyChar.ToString = Keys.F1.ToString Then
            MsgBox("f1")
        End If
End Sub

Acties:
  • 0 Henk 'm!

  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 28-05 11:42
In VB heb je daar een property KeyPreview voor die je op True moet zetten, zoiets zal .Net denk ik ook hebben? Probeer dat eens :).

edit:

Net even gekeken en het klopt idd. Even in de Form properties de KeyPreview aan zetten en dan krijgt de form eerst een "preview" van de toets die je indrukt :).

[ Voor 44% gewijzigd door Kix@$$ op 28-03-2003 22:34 ]


Acties:
  • 0 Henk 'm!

Anoniem: 32938

Topicstarter
ik heb de keypreview van de form op true gezet, maar nog steeds niks in de sub, had ook een breakpoint gezet (natuurlijk) voor als mijn code fout was, maar nee, niks :-(

Acties:
  • 0 Henk 'm!

  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 28-05 11:42
Anoniem: 32938 schreef op 28 March 2003 @ 22:35:
ik heb de keypreview van de form op true gezet, maar nog steeds niks in de sub, had ook een breakpoint gezet (natuurlijk) voor als mijn code fout was, maar nee, niks :-(
Wat voor toets doe je precies? Voor de controler toetsen (Ctrl, Delete, etc.) moet je in de KeyDown en niet in de KeyPress zitten :).

Acties:
  • 0 Henk 'm!

Anoniem: 32938

Topicstarter
heh f* zoals uit de code blijkt check ik de F1 toets, maar moet nog vele andere proberen.

Acties:
  • 0 Henk 'm!

Anoniem: 32938

Topicstarter
ok het werkt nu, heb ik nog een vraagie, er zijn dus een paar textboxes waar ik NIET wil dat de form hem afhandelt. hoe doe ik dit, ik dacht eerst de vlag e.handled op true zetten, maar ja dat is een byval waarde dus na de functie is die dat weer kwijt. iemand een idee?

dan ook, als het in de keydown zit, blijft deze functie continue uitgevoert zolang de toets naar beneden is of maar 1 maal?

[ Voor 42% gewijzigd door Anoniem: 32938 op 28-03-2003 22:46 ]


Acties:
  • 0 Henk 'm!

  • Kix@$$
  • Registratie: December 2001
  • Laatst online: 28-05 11:42
Anoniem: 32938 schreef op 28 March 2003 @ 22:42:
ok het werkt nu, heb ik nog een vraagie, er zijn dus een paar textboxes waar ik NIET wil dat de form hem afhandelt, kan ik dan gewoon de vlag e.handled op true zetten in de textbox keypress event? zodat de event niet 2 keer word afgehandelt.
Niet op deze manier, je form krijgt hem nu eerst binnen en daarna pas de textbox. Als je het zo wilt, moet je kijken wat je ActiveControl is denk ik... Ik heb opzich geen ervaring met .Net, maar ik zal ff voor je kijken :).

edit:

Wat denk ik het beste is, is dat je bijvoorbeeld zo doet:
[code=VB]
If Not Me.ActiveControl Is Me.TextBox1 Then
[/code]

En op die manier dus kijkt of het ongelijk is aan die control :).

[ Voor 17% gewijzigd door Kix@$$ op 28-03-2003 22:50 ]


Acties:
  • 0 Henk 'm!

Anoniem: 32938

Topicstarter
okie, ik ga het morgen proberen. bedankt.
Pagina: 1