Gå til innhold

C#: Programering av gjette program. WVD (tidligere eksamensoppgae)


Anbefalte innlegg

Du endret til dropdown list, men det ville jo egentlig vært greiere med radioknapper med tanke på brukergrensesnitt?

 

Edit: Ble brått litt usikker på dette med RadioButton. Jeg har gjort oppgaven før, og brukte en DropDownList i stedet for RadioButton, og egenskapen "SelectedIndex", men en RadioButton-gruppe har vel ingen tilsvarende egenskap? Da må du kanskje ha én if-setning for hver RadioButton, som gir en tallverdi for om det er den første, andre, tredje osv. som er krysset av.)

Jeg siterer meg selv litt her... :whistle:

Jeg prøvde å finne en egenskap for en radio-button-gruppe som angir hva du har valgt, men jeg kom frem til at det ikke finnes *håper noen protesterer på dette*. Problemet med dette oppstår f.eks. dersom man skal ha en spørreundersøkelse hvor man har 20 spørsmål listet under hverandre. Man markerer for hvert spørsmål ett av følgende alternativer (med radioknapper):

helt uenig - ganske uenig - ganske enig - helt enig

 

Siden vi vil ta vare på informasjon om hvilke svar som hører til hvilke spørsmål trenger vi 20 * 4 = 80 if-setninger (antall spørsmål * antall radioknapper for hvert spørsmål), og alle if-setningene er nesten identiske. Her må det være mulig å forbedre noe kraftig, men hvordan? Hjelp! :hmm:

Endret av grizzlyx
Lenke til kommentar
Videoannonse
Annonse

Ikke superelegant kanskje, men en måte å implementere en sånn radio-gruppe-sak kunne jo vært å derivere en klasse fra RadioButton (kall den for eksempel IndexedRadioButton) og legge til to nye properties som heter Index og Group. Så kan du for eksempel gjøre følgende (du må selvfølgelig flette det inn i programmet ditt men dette gir en grei idé av tankegangen):

 

int[] selectedIndex;

private void init()
{
   selectedIndex = new int[3];

   group1Radio1.CheckedChanged += new EventHandler(radio_CheckedChanged);
   group1Radio2.CheckedChanged += new EventHandler(radio_CheckedChanged);
   group1Radio3.CheckedChanged += new EventHandler(radio_CheckedChanged);

   group2Radio1.CheckedChanged += new EventHandler(radio_CheckedChanged);
   group2Radio2.CheckedChanged += new EventHandler(radio_CheckedChanged);
   group2Radio3.CheckedChanged += new EventHandler(radio_CheckedChanged);
}

private void radio_CheckedChanged(object sender, EventArgs e)
{
   if ((IndexedRadioButton)sender.Checked)
       selectedIndex[(IndexedRadioButton)sender.Group] = (IndexedRadioButton)sender.Index;
}

Så må du sette Group- og Index-propertyene slik de skal være for hver enkelt radiobutton og selvfølgelig passe på at selectedIndex omfatter alle gruppene (nullindeksert da så det må du være obs på når du setter Group-propertyen for dem). Så kan du bare lese av selectedIndex[2] for eksempel for å finne hvilken som er valgt i gruppe 2.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...