focus van vorige control bepalen

Status
Niet open voor verdere reacties.

alphakx

Nieuwe gebruiker
Lid geworden
17 mrt 2011
Berichten
2
Dag iedereen,

Ik ben een touchscreen applicatie aan het bouwen waarbij er een zestal textboxen moeten ingevuld worden.
Alles wordt ingevuld met een numeriek toetsenbordje op het scherm (cijfers 0-9 en backspace).
Om te bepalen welke textbox geactiveerd werd (en dus ingevuld gaat worden) had ik de naam van de textbox in een string gestoken. De string bevat dus één van de zes namen van de combobox.
Bij elke knop van het toetsenbord dacht ik aan iets in de zin van:

stringTextbox.focus();
SendKeys.Send("nummer");

dit werkt helaas niet. Kortom, ik wil de focus van de vorige control bepalen en deze gebruiken om hem vervolgens in te vullen.

Heeft iemand van jullie misschien een idee om dit op te lossen?

Dank bij voorbaat,
Alphakx
 
Schakel al je buttons naar één click-event, genaamd ''Test''. Voeg erna deze code toe:

PHP:
        //Geschreven door CaptainBri
        Control cOld = new Control();
        Control cNew = new Control();
        bool FirstClick = true;

        private void Test(object sender, EventArgs e)
        {
            if (!FirstClick)
            {
                if ((cNew as Button) != (sender as Button))
                {
                    cOld = cNew;
                    cNew = (Control)sender;
                }
            }
            else
            {
                cNew = (Control)sender;
                FirstClick = false;
                return;
            }
            MessageBox.Show(cOld.Name);
        }

Resultaat:
KCBgH.gif


Als je nog meer hulp nodig hebt, zeg het maar ;)
 
Laatst bewerkt:
Een kleinere nieuwe code, die tot mijn verbazing ook werkt:

PHP:
        Button c = new Button();
        bool f = true;

        private void Klik(object sender, EventArgs e)
        {
            if (!f) { MessageBox.Show(c.Name); c = (Button)sender; }
            else { c = (Button)sender; f = false; }
        }

Deze hierboven werkt alleen met een button, daarom deze korte oplossing door er een control van te maken:

PHP:
        Control c;
        bool f = true;

        private void Klik(object sender, EventArgs e)
        {
            if (!f) { MessageBox.Show(c.Name); c = (Control)sender; }
            else { c = (Control)sender; f = false; }
        }

Resultaat:
hMXYN.gif


P.S. Schakel al je controls naar de ''Klik'' void! :)

En om de focus op je vorige control te zetten, kan je door de controls in je form loopen en 'm vergelijken met ''Control c'', zoiets als dit:

PHP:
        private void DoFocus()
        {
            foreach (Control ctrl in this.Controls)
            {
                if (ctrl == c) ctrl.Focus();
            }
        }

Dus de uiteindelijke code zou moeten zijn:

PHP:
        Control c;
        bool f = true;

        private void Klik(object sender, EventArgs e)
        {
            if (!f) { MessageBox.Show(c.Name); DoFocus(); c = (Control)sender; }
            else { c = (Control)sender; f = false; }
        }

        private void DoFocus()
        {
            foreach (Control ctrl in this.Controls)
            {
                if (ctrl == c) ctrl.Focus();
            }
        }

Succes :P
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan