Avatar billede baatmus Nybegynder
04. marts 2004 - 23:16 Der er 5 kommentarer og
1 løsning

Default knap på User Control - Enter - AcceptButton

Normalt vil man anvende AcceptButton for at angive en default knap, der aktiveres af Enter tasten, men ...

Jeg har en Windows Form (popup), hvor jeg dynamisk indsætter en af mange forskellige mulige User Controls. På de fleste af disse UC'er findes en knap som gerne skulle være Default- eller OK-button. Hvordan kan jeg få en knap på den aktuelle User control til at reagere når jeg trykker Enter i samtlige andre kontroller på UC'en?
Avatar billede burningice Nybegynder
08. marts 2004 - 18:45 #1
du kan vel bruge KeyPress-eventen i den aktuelle usercontrol til at tjekke hvilken tast der blev trykket på. Hvis den matcher >enter< kan du vel få koden til at aktivere din default-knap.

Dog kan jeg ikke helt se problematikken... burde din usercontrol ikke netop sende tastetrykket videre op til din form som så kan afgøre om hvilken knap der er default og aktivere den ud fra det?
Avatar billede baatmus Nybegynder
18. november 2004 - 02:44 #2
Der falder ingen event igennem til formen og det er godt det samme, for der skal foregå en processering af UC'ens data inden formen kommer i spil.

KeyPress eventen på formen får heller ikke besked, så alternativet er at checke keypress event på samtlige kontroller og det vil jeg gerne undgå.
Avatar billede burningice Nybegynder
26. januar 2005 - 23:10 #3
Jeg kom til at tænke på en ting... på selve Form-objectet er der en AcceptButton-property. Kan du ikke fra din UC gøre dette:

this.FindForm().AcceptButton = dinKnap;

Hvis der er flere af dine UC'er der udfører ovenstående kode, bliver det selvfølgelig den der kom sidst som får default-knappen.
Avatar billede baatmus Nybegynder
27. januar 2005 - 08:49 #4
Kære Cyberfessor!
Jeg havde faktisk næsten opgivet mit spørgsmål, men det er rart at se, at nogen kigger tilbage på tidligere spørgsmål.
Din løsning er simpelthen lige i øjet. Det virker bare lige som det skal. I usercontrol'ens initialeisering sætter jeg bare:

  ParentForm.ActiveForm.AcceptButton = btnMinUCAcceptButton

Genialt og enkelt ... mange tak. Hvis du vil have point må du lige sende et svar. De er i sandhed fortjent.
Avatar billede baatmus Nybegynder
27. januar 2005 - 09:39 #5
UPS - min forrige fremgangsmåde du'r ikke. Hvis brugeren gør en anden control aktiv vil Anter stadig hooke den oprindelige UC's btnMinUCAcceptButton.

Så vidt jeg kan skønne skal man i stedet referere/nulstille acceptButton i UC'ens Enter/Leave event. Men så ser det osse lovende ud :-)
Avatar billede burningice Nybegynder
27. januar 2005 - 10:15 #6
:) håber i hvert fald du finder ud af det
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