Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  8 872
Hei,

Fint om noen kunne tatt seg bryet med å peke ut hva som er galt med denne koden.

Problemet er følgende:

Et enkelt formsprogram samler inn data fra diverse tekstbokser, samler dem i én tekstboks, som igjen utgjør bodyen til en e-post. Greit nok.
I bunnen av denne bodyen (body.Text) skal det legges til tekst dersom en checkbox er valgt. Valget fra checkboxen blir skrevet til choice.Text, som inkluderes i body.Text. Problemet er at denne taktikken av en eller annen grunn bare funker med Valg 3.

Kode

private void button1_Click(object sender, EventArgs e)
        {
                           
                     if (checkbox1.Checked)
                {
                    choice.Text = "Valg en";
                }
                     else
                {
                     choice.Clear();
                }
                     
                     if (checkbox2.Checked)
                {
                    choice.Text = "Valg 2";
                }
                     else
                {
                    choice.Clear();
                }
        
                     if (checkbox3.Checked)
                {
                    choice.Text = "Valg3";
                }
                     else
                {
                         choice.Clear();
                }
Grunnen skal være grei nok, egentlig. La oss bryte det opp stegvis og se på hva som skal skje her. Vi har som forutsetning at vi nå har trykket på checkbox1.

Kode

1. if( checkbox1.Checked )  // True
2. choice.Text = "Valg en";
3. if( checkbox2.Checked ) // False
4. choice.Clear();
5. if( checkbox3.Checked ) // False
6. choice.Clear();
Tar vi utgangspunkt i at vi har trykket på checkbox3 så vil hendelsesforløpet være slik

Kode

1. if( checkbox1.Checked )  // False
2. choice.Clear();
3. if( checkbox2.Checked ) // False
4. choice.Clear();
5. if( checkbox3.Checked ) // True
6. choice.Text = "Valg3";
I første eksempel vil choice.Text bli satt til "Valg en", deretter kjører du clear() to ganger, fordi begge siste statements vil bli evaluert til false. I siste eksempel vil du kjøre clear() to ganger for så å sette verdien til choice.Text.
Sist endret av m0b; 2. november 2010 kl. 23:09.
Sitat av bronsky Vis innlegg
Hei,

Fint om noen kunne tatt seg bryet med å peke ut hva som er galt med denne koden.

Problemet er følgende:

Et enkelt formsprogram samler inn data fra diverse tekstbokser, samler dem i én tekstboks, som igjen utgjør bodyen til en e-post. Greit nok.
I bunnen av denne bodyen (body.Text) skal det legges til tekst dersom en checkbox er valgt. Valget fra checkboxen blir skrevet til choice.Text, som inkluderes i body.Text. Problemet er at denne taktikken av en eller annen grunn bare funker med Valg 3.

Kode

private void button1_Click(object sender, EventArgs e)
        {
                           
                     if (checkbox1.Checked)
                {
                    choice.Text = "Valg en";
                }
                     else
                {
                     choice.Clear();
                }
                     
                     if (checkbox2.Checked)
                {
                    choice.Text = "Valg 2";
                }
                     else
                {
                    choice.Clear();
                }
        
                     if (checkbox3.Checked)
                {
                    choice.Text = "Valg3";
                }
                     else
                {
                         choice.Clear();
                }
Vis hele sitatet...

Kanskje ikke så rart at dette ikke fungerer så godt, om du fjerner denne choice.Clear(); på hver sjekk i koden din så vil den ihvertfall fungere litt mindre dårlig, slik det er nå så slår checkboksen under alltid ihel den foregående.

forslag som funker litt bedre:


Kode

private void button1_Click(object sender, EventArgs e)
        {
                    choice.Clear();
                     if (checkbox1.Checked)
                          choice.Text = "Valg en";
                     if (checkbox2.Checked)
                         choice.Text = "Valg 2";
                     if (checkbox3.Checked)
                         choice.Text = "Valg3";

du vil dog fortsatt få trøbbel om mer enn 1 checkbox er krysset ut
Sitat av petterpan2 Vis innlegg
Kanskje ikke så rart at dette ikke fungerer så godt, om du fjerner denne choice.Clear(); på hver sjekk i koden din så vil den ihvertfall fungere litt mindre dårlig, slik det er nå så slår checkboksen under alltid ihel den foregående.

forslag som funker litt bedre:

du vil dog fortsatt få trøbbel om mer enn 1 checkbox er krysset ut
Vis hele sitatet...
Det er ikke så viktig! Det var akkurat slik det var ment. Tusen takk for all hjelp og forslag.
Et lite tips til deg, visual studio har sannsynligvis markedets beste debuger, sett noen breakpoints (gjerne på hver linje hvis du ikke skjønner hva som skjer) og det vil nok gå opp noen lys for deg

elsker den debugeren!
nso
popålol
nso's Avatar
Administrator
Videre er det greit om du tar i bruk ASP.Net MVC 2, det er ren lykke.

Patternet med events på serveren som initieres fra view er tåpelig, og du bør droppe det raskest mulig for å beholde vettet. Gå heller over til kontrollere som tar seg av slik
nso: Jeg tror han bruker winforms, ikke web. Ellers er jeg helt enig;P
Sist endret av TheGEEK; 3. november 2010 kl. 00:20.
nso
popålol
nso's Avatar
Administrator
Sitat av TheGEEK Vis innlegg
nso: Jeg tror han bruker winforms, ikke web. Ellers er jeg helt enig;P
Vis hele sitatet...
Ållreit, viser hvor mye jeg vet... carry on
Sist endret av nso; 3. november 2010 kl. 00:24.
Sitat av nso Vis innlegg
Ållreit, viser hvor mye jeg vet... carry on
Vis hele sitatet...
Ja, var ikke meningen å vigle opp til bråk her

Det er et windows forms program, og resultatet av sammenslåing av en haug med tekstbokser ender opp i én tekstboks som videre blir sendt til en spesifikk epostadresse. Et skjema i winforms-format (fordi jeg ikke har satt meg noe særlig inn i webapps ennå).