Avatar billede ThePulse100270 Nybegynder
26. januar 2010 - 10:42 Der er 5 kommentarer

textbox mister fokus

Hejsa

Jeg er nybegynder i c#!

i mit program har jeg en webbrowser(der fylder det hele) og brugeren skal så trykke 12 (f.eks.) for at se ID 12 -> hvilket resulterer i at browseren navigerer til adresse.php?id=12

Jeg har det egentlig fået det til at virke sådan nogenlunde ved at have en textbox med en tabindex=0 uden for det synlige skærmareal og så en skjult label der bliver synlig ved input i textboksen (der på en pæn måde viser det man taster)

Problemet opstår når man så klikker i webbrowseren, så mister textboksen fokus og funktionen virker så ikke mere.
Jeg har prøvet på alverdens måder at få textboksen til at få fokus igen, men uden held.

så?

1. Er der ikke en smartere måde at få input/gøre det på -> evt. at textboksen ikke behøver at have fokus -> eller er der en anden måde at tvinge tekstboxen til at få fokus en textbox.focus() for det kan jeg ikke få til at virke når webbrowser er klikket!

2. Nogen ideer?
Avatar billede bitmatic Nybegynder
26. januar 2010 - 11:15 #1
På din form er det en property der hedder KeyPreview (eller noget lignende... Det er frit fra hukommelsen). Hvis du sætter den til true får din hovedform alle keyevents før dine controls gør det.

Hvis du så tilføjer en keyeventhandler til din form kan du i den checke hvad brugeren indtaster - uafhængigt af fokus, skjulte textboxe, tabindexes, osv.
Avatar billede ThePulse100270 Nybegynder
26. januar 2010 - 11:54 #2
Hejsa

Nu har jeg i Form1 sat KeyPreview til true og under Form1 events klikket i KeyPress. så jeg har tilføjet en keyeventhandler (tror jeg da nok ;) )
private void Form1_KeyPress(object sender, KeyPressEventArgs e)
{
    MessageBox.Show("test");
}

og det virker også fint nok når jeg ikke klikker i webBrowser1, men lige så snart jeg klikker i webBrowser1 eller trykker tab, så reagerer den ikke mere?
Avatar billede bitmatic Nybegynder
26. januar 2010 - 12:12 #3
jep.... Jeg har leget lidt videre med det.

Det virker ikke. Tror det er fordi WebBrowser ikke har standard keyeventhandlers.

Jeg har lavet det i WPF i stedet. Der virker det. Du skal blot sætte Focusable til false på din WebBrowser kontrol, og så tilføje en keyeventhandler til din form.
Avatar billede ThePulse100270 Nybegynder
26. januar 2010 - 14:31 #4
Jeg fandt en løsning

Med det der KeyPreview halløj, der kan man i webbrowser vælge previewkeydown og så er der en keyeventhandler i webbrowser vinduet!
Avatar billede bitmatic Nybegynder
26. januar 2010 - 15:28 #5
cool. Det er nok en udemærket løsning.

Man skal altid være varsom med at begynde at lave manuelt styring af focus i WinForms. Det er noget skrald.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester