Verder gaan met de ENTER toets

Status
Niet open voor verdere reacties.

lonssie

Gebruiker
Lid geworden
9 okt 2007
Berichten
27
Hallo,

Een tijdje geleden heb ik een Form met een aantal textBoxen gemaakt om gevens in te voeren. Met de onderstaande code heb ik gemaakt dat de TAB toets 'geactiveerd' word wanneer er op ENTER wordt gedrukt.
Nu wil ik maken dat wanneer er op ENTER wordt gedrukt, de TAB toets EN de ENTER toets 'geactiveerd' word, wanneer de cursor in de laatste textBox staat.(als voorbeeld even textBox1) Hiermee wil ik bereiken dat de Opslaan Button automatisch 'ingedrukt' word. Heeft iemand een idee hoe ik dit kan maken?

Code:
        private void General_KeyDown(object sender,
        System.Windows.Forms.KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                SendKeys.Send("{TAB}");
                // Hier kan ik ook van maken: ("{TAB}+{ENTER}"), maar dit geld
                // dan voor alle textBoxen
            }

en in Form1.Designer.cs zet ik:

Code:
// 
// TextBox1
// 
this.TextBox1.KeyDown += new System.Windows.Forms.KeyEventHandler(this.General_KeyDown);

Ik hoop dat mijn vraag een beetje duidelijk is.
 
Je hebt toch een methode gekoppelt aan de "opslaan" knop?
Als je die aanroept als je op tab drukt in het laatste tekstveld dan doe je hetzelfde als je nu zou willen met de Enter erbij.
 
Laatst bewerkt:
Hey killermenace,

Ik denk dat ik dan een stukje code nodig heb om te kijken welke textBox geselecteerd is
(althans, waar de cursor knippert). Kun je me vertellen of dat mogelijk is?

dus iets in de richting van

Code:
if (this.textBox1.Selected = true && //code voor wanneer TAB ingedrukt wordt)
{
// code om op te slaan
}

alleen werkt dit stukje code niet dus daar heb ik iets anders voor nodig:
Code:
 this.textBox1.Selected = true

Edit: Gefeliciteerd trouwens, killermenace!
 
Laatst bewerkt:
Dat hoeft niet, want je kan per textbox een methode aan een event koppelen.
Dan hoef je alleen bij de laatste textbox de aparte methode aan de keyevent te koppelen(dat bliksempje bij de properties, daar staan alle mogelijke events), omdat je standaard een tabindex in kan stellen in de properties van een textbox zelf.

Code:
        private void textboxKeyPressed( object sender, KeyPressEventArgs e )
        {
           //hier de opslaancode en de code om tab te activeren
        }

In de eventlist onder "keyPress" vul je de functie in.. nl: textboxKeyPressed
Vervolgens op enter drukken dat hij dan die functie aan de event koppelt

[edit] Dankje :)
 
Laatst bewerkt:
Sow, dat werkt perfect!

K heb t nu zo gemaakt dat er eerst een MessageBox tevoorschijn komt met de vraag of ik echt op wil slaan:

Code:
        private void textboxKeyPressed(object sender, KeyPressEventArgs e)
        {
            DialogResult dlr = MessageBox.Show("Wilt u de ingevoerde gegevens opslaan?", "Opslaan", MessageBoxButtons.OKCancel,
            MessageBoxIcon.Question);
            if (dlr == DialogResult.OK)
            {
                //opslaan
            }

Nu is standaard de Annuleren/Cancel Button geselecteerd, dus als ik op enter druk worden de gegevens niet opgeslagen. Is het mogelijk om de
TabIndex te veranderen van zo'n MessageBox?
 
Je kan de tabindex veranderen op dezelfde manier als je het kan doen met een textbox.
 
Bij een textbox doe ik dit bij properties, maar als ik gebruik maak van

Code:
DialogResult dlr = MessageBox.Show("Wilt u de ingevoerde gegevens opslaan?", "Opslaan", MessageBoxButtons.OKCancel,
            MessageBoxIcon.Question);

'maakt' ie zelf een messagebox met buttons, en daarvan kan ik geen properties instellen.
Een andere manier zou zijn door de TabIndex in Form1.Designer.cs te veranderen, maar ook daar zie ik niks terug van die messagebox!
 
vaak kan je de tabindex in de code ook instellen
Als ik het goed uit mijn hoofd weet:
Code:
messageBox.TabIndex = waarde;
 
ik denk dat je daarvoor moet weten hoe die buttons heten en dat je dan bijvoorbeeld kan maken:

Code:
this.messageboxButton.OK.TabIndex = 1;

maar die messageboxButton.OK kent ie niet.

Maja misschien dat het morgen ineens wel wil lukken, en anders maak ik wel een klein formpje met een label en 2 buttons i.p.v. een messagebox :rolleyes:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan