Gå til innhold

Sliter med en conditional statement


Anbefalte innlegg

Sliter med å skjønne noe her.

Jeg har en kode her som fungerer fint

private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }

Dette fungerer men problemet her er at jeg vil ha en sjekk ved oppstarten av formen, ikke når checkboxen har endret seg. Hvis jeg renamer til private void checkBox3 så får jeg ambiguity error.

 

Hvis jeg gjør det under load av formen skjer ingenting

      private void Analyser_Load(object sender, EventArgs e)
        {
            StartPosition = FormStartPosition.CenterParent;

            FormBorderStyle = FormBorderStyle.FixedSingle;
            MaximizeBox = false;
            MinimizeBox = false;
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }

Kan det ha noe med at jeg starter formen her via en knapp? Får ingen error i Visual studio heller, skjønner ikke hvorfor dette ikke fungerer.

Lenke til kommentar
Videoannonse
Annonse

prøv med

if("abc".equals("abc"))

Dette er den riktige måten å sammenlikne strenger på. Den første metoden sammenlikner objektet, så de må være samme objekt om den skal være true. Men 2 strenger med samme innhold er ikke nødvendigvis samme objekt.

 

Edit: prøvde å google litt, og ser ut som dette er noe som bare er sant i Java-verden. Å sammenlikne strenger på den måten er tydeligvis lov i .NET

 

- Prøv å putte en breakpoint inne i load-metoden og se om den kommer inn i metoden i det hele tatt. Gå så steg for steg videre og se om statementet som setter checkboxen til true blir utført.

Endret av etse
Lenke til kommentar

Sliter med å skjønne noe her.

Jeg har en kode her som fungerer fint

private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }
Dette fungerer men problemet her er at jeg vil ha en sjekk ved oppstarten av formen, ikke når checkboxen har endret seg. Hvis jeg renamer til private void checkBox3 så får jeg ambiguity error.

 

Hvis jeg gjør det under load av formen skjer ingenting

      private void Analyser_Load(object sender, EventArgs e)
        {
            StartPosition = FormStartPosition.CenterParent;

            FormBorderStyle = FormBorderStyle.FixedSingle;
            MaximizeBox = false;
            MinimizeBox = false;
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }
Kan det ha noe med at jeg starter formen her via en knapp? Får ingen error i Visual studio heller, skjønner ikke hvorfor dette ikke fungerer.

 

Skal if-en din virkelig bare inneholder if("abc" == "abc") eller er det bare eksempelkode?

 

Ellers skal du fint kunne sette checkBox3.Checked = true i Form_Load.

 

Grunnen til Ambiguity error er at du allerede har et objekt som heter checkBox3 på objektet, så derfor kan du ikke lage et medlem til (funksjonen) med samme navn.

Lenke til kommentar

 

Sliter med å skjønne noe her.

Jeg har en kode her som fungerer fint

private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }
Dette fungerer men problemet her er at jeg vil ha en sjekk ved oppstarten av formen, ikke når checkboxen har endret seg. Hvis jeg renamer til private void checkBox3 så får jeg ambiguity error.

 

Hvis jeg gjør det under load av formen skjer ingenting

      private void Analyser_Load(object sender, EventArgs e)
        {
            StartPosition = FormStartPosition.CenterParent;

            FormBorderStyle = FormBorderStyle.FixedSingle;
            MaximizeBox = false;
            MinimizeBox = false;
            if ("abc" == "abc")
                checkBox3.Checked = true;
        }
Kan det ha noe med at jeg starter formen her via en knapp? Får ingen error i Visual studio heller, skjønner ikke hvorfor dette ikke fungerer.

 

Skal if-en din virkelig bare inneholder if("abc" == "abc") eller er det bare eksempelkode?

 

Ellers skal du fint kunne sette checkBox3.Checked = true i Form_Load.

 

Grunnen til Ambiguity error er at du allerede har et objekt som heter checkBox3 på objektet, så derfor kan du ikke lage et medlem til (funksjonen) med samme navn.

 

 

Nei det er kun for å skjønne hvordan c# syntaxen fungerer. Jeg har drevet med PHP og prøver nå å lage et program i C# som analyserer en PC, til det tenkte jeg å ha en del sjekkbokser og hvis den ser at alt er riktig så skal den krysse av sjekkboksen. Så da lagde jeg mest enkle if statement jeg fant på bare for å se at det faktisk fungerer ...

 

Det jeg sliter virkelig med å forstå er at dette fungerer under checkBox_CheckedChanged. Jeg vil jo ikke kjøre en if handling under dette, da vil det jo kun kjøre når checkboxen blir endret.

 

Derfor lagde jeg en ny linje med kun checkBox og if statementen under, men da får jeg Ambiguity error noe jeg ikke skjønner heller. checkbox3 eksisterer kun en plass. Så alt jeg vil er å kjøre en IF statement mot en checkbox. Ikke når checkboxen BLIR endret. Sjekken skal skje ved oppstart.

Endret av Avean
Lenke til kommentar

Fant utav det delvis. Det fungerer på main_load (Hovedformen min) hvis jeg setter spørringen der. Akkurat som jeg vil. Men altså i neste programsnutten jeg holder på med, den kaller en form fra en knapp, er der den ikke vil ta spørringen. Jeg må sikkert ha spørringen på annen måte enn under loadingen av formen, fungerer sikkert annerledes når formen kalles fra en knapp. Da finner jeg utav det.

Lenke til kommentar

Ideelt har du alt slikt i constructoren. Etter InitializeComponents kan du sette CheckBox.Checked til hva du vil.

 

 

public class MyForm : Form
{
  public MyForm()
  {
     InitializeComponents();
     if(foo == bar)
     {
        CheckBox3.Checked = true;
     }
  }
}

Du bør ha en veldig spesifikk grunn til å gjøre no i Form.Load.

Sånn i tilfelle du ikke er klar over det, navngivning av disse funksjonene har ingenting med hva de gjør å gjøre. Dersom du lager en funksjon som heter Form_Load betyr ikke det at denne koden noensinne blir kalt.

Inne i InitializeComponents skjer dette:

this.Load += Form_Load;

 

som binder Form_Load funksjonen til Load eventet til Formen.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...