Avatar billede iakob Nybegynder
20. februar 2009 - 09:21 Der er 6 kommentarer og
1 løsning

Sæt fokus på radioknapper (radiobutton)

Jeg har en ja/nej radioknap, som der skal være udfyldt - men som ikke er udfyldt initielt. Det skal være en radioknap.

Mit problem er at der ikke på skrærmen kommer nogen visuel clue om at radioknappen er den valgte - normalt når man tabber over sådan en radioknap så kommer der en lille firkant frem så brugeren kan se hvor vedkommende er.

(NB. hvis man sætter focus på en radioknap, så bliver den også valgt og det må den ikke blive, så derfor sætter jeg autocheck / checked)

Jeg har prøvet:
  radioknap.Focus();
  radioknap.Checked = false;

og
  radioknap.Select();
  radioknap.Checked = false;

og
  radioknap.Focus();
  radioknap.Select();
  radioknap.Checked = false;

og
  radioknap.AutoCheck = false;
  radioknap.Focus();
  radioknap.AutoCheck = true;
  radioknap.TabStop = true;
(autocheck = true sætter tabstop = false)

og jeg har endda prøvet med SelectNextControl() og så simulere at brugeren tabber sig frem. Det virker ikke - der er ikke noget visuelt clue om at radioknappen er sat.

Nogen hjælp?
Avatar billede tjacob Juniormester
20. februar 2009 - 10:20 #1
Det du ønsker er ikke muligt uden lidt workaraound kode.

Det nemmeste er nok at sætte AutoChecked til false på alle radioknapperne. Så vil de blive markeret (med firkant) når du tabber rundt, eller når du programmelt sætter Focus().

Men, når du sætter AutoChecked til false bliver knappen ikke selected når du klikker. Derfor bliver du nødt til at håndtere det selv i knappernes Click-Event.
I alle knappers Click-Event sætter du først alle knapper til unchecked, og derefter den aktuelle knap til checked.

Der er dog også andre muligheder. Se f.eks. her (kode i C#):
http://groups.google.com/group/microsoft.public.dotnet.languages.csharp/browse_thread/thread/2a291fae6691f9e8/23bcaa95200b6edf?pli=1
Avatar billede iakob Nybegynder
20. februar 2009 - 11:28 #2
Den sidste sætning:
...Det virker ikke - der er ikke noget visuelt clue om at radioknappen er sat.

skulle naturligvis have været:
...Det virker ikke - der er ikke noget visuelt clue om at radioknappen er i fokus.
Avatar billede iakob Nybegynder
20. februar 2009 - 12:30 #3
Jeg har prøvet følgende:


void radioKnap_Click(object sender, EventArgs e)
{
  radioKnap.Checked = !radioKnap.Checked;
}

Og i Initialize:
    radioKnap.AutoCheck = false;
    radioKnap.Click += new EventHandler(radioKnap_Click);


Og så i min Validate() metode:
    radioKnap.Focus()


Nu sker der to ting:
1. Der sættes en klat i radioKnap fordi click-eventet bliver fyret - men det kan jeg programmere mig ud af.
2. Der er stadig ikke nogen visuel clue (markering af radioknappen) som fortæller brugeren hvilken af de forskellige radioknapper der nu har fokus.

Jeg kan godt tabbe mig rundt i dialogen og få radioknappen markeret - jeg kan bare ikke få den markeret når jeg kalder Focus() på den.

Tak for linket - men så vidt jeg kan se så omhandler det alene hvordan man får focus til at virke - ikke hvordan man får markeringen til at virke?
Avatar billede tjacob Juniormester
20. februar 2009 - 13:33 #4
Ja, jeg kan godt se -efter lidt eksperimenteren- at radiobuttons udviser en mærkelig adfærd:

Hvis man lægger et par knapper og en radiobutton (sæt AutoCheck=False) i en form:
I knap1_klik lægger RadioButton1.Focus(), og kører formen:

Hvis man klikker umiddelbart på knap1 sker der intet.
Hvis man tabber indtil radioknappen har været markeret, og DEREFTER klikker på knap1, ja så BLIVER radioknappen markeret fremover.  -Underligt.

Og hvis man lægger Checked ind i radiobutton.click, så vil den blive checked blot ved .Focus().  -Også underligt.
Avatar billede iakob Nybegynder
21. oktober 2009 - 13:40 #5
Der var ikke nogen god løsning.
Avatar billede tjacob Juniormester
21. oktober 2009 - 14:05 #6
Som jeg skrev i PM, -tag pointene selv....:)
Avatar billede iakob Nybegynder
21. oktober 2009 - 18:31 #7
Ok... du har jo også nok ;-) Men tak for hjælpen.
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