Avatar billede hsm Nybegynder
31. december 2005 - 00:41 Der er 9 kommentarer og
1 løsning

Event når man trykker enter?

Hej Eksperter,

Jeg har ledt efter en event til en System.Windows.Forms.TextBox, der trigges når man trykker på Enter medens man har fokus på pågældende TextBox.

Jeg har en System.Windows.Forms.Button på samme Form, som løser problemet, men jeg synes det ville virke mere praktisk hvis blot man kunne trykke Enter.

Men jeg kan ikke finde sådan en event. Er der nogen der ved hvordan man klarer den situation?
Avatar billede m_els Nybegynder
31. december 2005 - 01:13 #1
Hvad med:

dinTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox3_KeyPress);

og

private void textBox3_KeyPress(object sender, KeyPressEventArgs e)
{
  //Din kode her
}
Avatar billede m_els Nybegynder
31. december 2005 - 01:14 #2
copy/paste fejl :-), her kommer det rigtige:

Hvad med:

dinTextBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox3_KeyPress);

og

private void dinTextBox_KeyPress(object sender, KeyPressEventArgs e)
{
  //Din kode her
}
Avatar billede pfp Nybegynder
31. december 2005 - 01:16 #3
Hej,

Det er forholdsvist nemt at gå til.

Prøv med følgende på din KeyDown event på din TextBox:

if (e.KeyCode == Keys.Enter)
{
  //DoSomething();
  e.Handled = true;
}

Ved at sætte e.Handled lig true, fortæller du Windows at du selv styrerer håndteringen af denne event...og dermed undgår du den irriterende "Advarsel"-lyd.

/pfp
Avatar billede pfp Nybegynder
31. december 2005 - 01:18 #4
Keys enumeratoren indeholder selvfølgelig også definitionen på en lang række andre taster end lige Enter.

Dem kan kan du læse yderligere om her, hvis du vil:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformskeysclasstopic.asp
Avatar billede bitsch Nybegynder
31. december 2005 - 09:14 #5
Som jeg forstår dit oplæg, så er det du ønsker at din knap bliver trykket uanset om din knap har focus. Det eneste du skal gøre for at fikse dette er at sætte AcceptButton på din form til den aktuelle knap.
Avatar billede bitsch Nybegynder
31. december 2005 - 09:46 #6
Ved at gøre dette får du samtidigt sat det rigtige button state, så man kan se at knappen bliver trykket ved enter. Der findes desuden en tilsvarende CancelButton property.
Avatar billede hsm Nybegynder
31. december 2005 - 13:03 #7
Tak for de konstruktive forslag. Jeg synes bedst om bitsch løsning, idet den kun indeholder en enkelt linie med kode:

this.AcceptButton = buttonGo;

Meget elegant, synes jeg.
Avatar billede bitsch Nybegynder
31. december 2005 - 14:14 #8
Det er også standard måden at løse det på, jeg tror blot de øvrige bidragere løb af sporet da du snakkede om key events. Det er kun i særlige tilfælde at du behøver en sådan løsning.

Godt nytår!
Avatar billede pfp Nybegynder
31. december 2005 - 14:44 #9
Jeg har brugt min løsning i en søgefunktion, hvor jeg ikke ville have en søg-knap. Men ellers er bitsch da nemmest at gå til.
Avatar billede bitsch Nybegynder
31. december 2005 - 16:21 #10
Fint nok, men du bør anvende min løsning, da du ellers vil have et forkert state på din knap (brugeren kan ikke se at den vil blive klikket hvis man trykker enter).
At anvende key events er noget man normalt kun bruger ved Custom Controls, da man ellers hurtigt kan tilegne sig en dårlig user expirence.
Bemærk at jeg ikke siger at din løsning er forkert, du vil blot ikke få den standard funktionalitet med som normalt er knyttet (og forventet) af en WinForm.
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