Avatar billede swamboo Seniormester
03. november 2009 - 22:59 Der er 11 kommentarer og
1 løsning

Enter til Tab

Hvordan får jeg et tast på enter til at hoppe som tab-indexet anviser.
Jeg har en del boxe som er opsat efter bestemt tab-mønster. Kunne godt tænke mig enter er = tab-tryk.

Kan det lade sig gøre??

Takker!!!!
Avatar billede bmdk Nybegynder
03. november 2009 - 23:33 #1
hey swamboo, er det et WinForms eller ASP.NET project, der er tale om her? :)
Avatar billede swamboo Seniormester
03. november 2009 - 23:57 #2
WinForms....
Avatar billede bmdk Nybegynder
04. november 2009 - 00:01 #3
Perfekt!

Du kan gøre brug af dine TextBox's KeyDown events, hvor du først ser på, om den tast du har trykket på er Enter tasten, hvis det er tilfældet, så kan du "sende" en tast- i dit tilfælde en {TAB} tast, så du faktisk siger, at hvert Enter tast er det samme som et Tab tast.

Lidt kode:

public Form1()
        {
            InitializeComponent();
            txt1.KeyDown += new KeyEventHandler(txt1_KeyDown);
        }

void txt1_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                SendKeys.Send("{TAB}");
            }
        }
Avatar billede bmdk Nybegynder
04. november 2009 - 00:02 #4
Problemet her er så, at du skriver du har mange textboxes på din form, så det er jo relativt mange eventhandlers at hooke op. Det kan (og bør) nok gøres lidt mere dynamisk - skriver igen hvis jeg kommer frem til noget.
Avatar billede bmdk Nybegynder
04. november 2009 - 00:07 #5
.. og sørme så om ikke vi kunne finde ud af det også :)

Du får koden:

public Form1()
        {
            InitializeComponent();
            Control ctrl = new Control();
            foreach(Control c in this.Controls)
            {
                if (c is TextBox)
                {
                    c.KeyPress += new KeyPressEventHandler(c_KeyPress);
                }
            }
        }

        void c_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                SendKeys.Send("{TAB}");
            }
        }
Avatar billede swamboo Seniormester
04. november 2009 - 00:10 #6
Man kan ikke lave en der gælder for hele groupbox'en? Tab-rækkefølgen burde jo selv vide hvor bruger skal sendes hen, hvis den "bare" modtaget et tab-tryk... eller tænker jeg forkert??
:o)
Avatar billede bmdk Nybegynder
04. november 2009 - 00:11 #7
Og du kan naturligvis slette denne control:

Control ctrl = new Control();
Avatar billede bmdk Nybegynder
04. november 2009 - 00:13 #8
Det kan du også godt, den eneste forskel er blot, at du skal loope igennem alle Controls, der ligger i GroupBoxen.

foreach(Control c in groupBox1.Controls)

således :)
Avatar billede bmdk Nybegynder
06. november 2009 - 02:16 #9
swamboo,

Fik du det til at virke? :)
Avatar billede swamboo Seniormester
08. november 2009 - 20:33 #10
Har først haft tid til at lege med det i dag.
Jeg får følgende fejl:
Error    2    'System.Windows.Forms.KeyEventArgs' does not contain a definition for 'keychar'
Avatar billede swamboo Seniormester
08. november 2009 - 20:40 #11
Hov hov hov....
Det virker jo, det var bare mig der &%&#%%&/((/¤#¤!!!!!

Smid lige et svar - det var jo lige som ønsket!!
Avatar billede bmdk Nybegynder
08. november 2009 - 20:46 #12
Cool! :) godt det kunne bruges!
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