Nybörjare i c#, tänker jag rätt angående Checkboxes?

Permalänk
Medlem

Nybörjare i c#, tänker jag rätt angående Checkboxes?

Hej på er!

Jag har endast hållit på med programmering i några veckor och det händer precis som för många andra nybörjare att man snöar in sig och börjar krångla till onödigt mycket istället för att tänka om och ta den enkla vägen.

Tyvärr så har jag börjat inse att sprungit på ett av dessa fenomen just ikväll och jag verkar inte komma på något bättre lösning än vad jag har nu...

Jag kommer nedan presentera en betydligt enklare variant av program som jag försöker skriva just för att göra det så enkelt som möjligt för mig och för er mestadels för mig själv.

Programmet:

Koden:

using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { if (checkBox1.Checked) { string jag = "Jag"; } else { string jag = ""; } if (checkBox2.Checked) { string gillar = "gillar"; } else { string gillar = ""; } if (checkBox3.Checked) { string frukt = "frukt"; } else { string frukt = ""; } label2.Text = jag + gillar + frukt; } } } }

Problematik:
Som ni säkerligen ser så vill jag skriva ut en mening beroende på vilka ord jag väljer att markera. Men jag förstår inte hur jag skall få detta att fungera. Är det någon vänlig själv som kan förklara mig vad jag gör för fel och hur man egentligen borde göra. För som jag skrivit nu så kan jag inte nå mina variabler som ligger i dessa IF-satser.

Trevlig kväll!

Visa signatur

[Intel Core i5 2500k] [Asus P8Z68-V Pro] [2x ATI 6950 1gb] [Fractal Design XL] [Corsair HX 750W] [Corsair 16Gb 1600MHz] [OCZ SSD Vertex3 120GB]

Permalänk
Medlem

tror du bara har en } för mycket på slutet ?

edit: ergh tror jag missa vad du fråga, du kan bara deklarera strings:en innan if-satserna också

Visa signatur

orka

Permalänk
Medlem

5min senare........

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string jag = ""; string gillar = ""; string frukt = ""; if (checkBox1.Checked) { jag ="Jag"; } else { jag = ""; } if (checkBox2.Checked) { gillar = "gillar"; } else { gillar = ""; } if (checkBox3.Checked) { frukt = "frukt"; } else { frukt = ""; } label2.Text = jag + gillar + frukt; } } }

Fungerar klockrent...

Visa signatur

[Intel Core i5 2500k] [Asus P8Z68-V Pro] [2x ATI 6950 1gb] [Fractal Design XL] [Corsair HX 750W] [Corsair 16Gb 1600MHz] [OCZ SSD Vertex3 120GB]

Permalänk
Medlem
Skrivet av miffo:

tror du bara har en } för mycket på slutet ?

Hej Miffo och tack för ditt svar!

Jag insåg det också!

Verkar dock har hittat en lösning.

Visa signatur

[Intel Core i5 2500k] [Asus P8Z68-V Pro] [2x ATI 6950 1gb] [Fractal Design XL] [Corsair HX 750W] [Corsair 16Gb 1600MHz] [OCZ SSD Vertex3 120GB]

Permalänk
Hedersmedlem

Och eftersom strängarna är initierade till "" så behövs inte else-satserna.

Permalänk
Medlem
Skrivet av Shimonu:

Och eftersom strängarna är initierade till "" så behövs inte else-satserna.

Helt rätt, tack så mycket!

Visa signatur

[Intel Core i5 2500k] [Asus P8Z68-V Pro] [2x ATI 6950 1gb] [Fractal Design XL] [Corsair HX 750W] [Corsair 16Gb 1600MHz] [OCZ SSD Vertex3 120GB]

Permalänk
Medlem

Svårt att veta vad ditt egentliga problem går ut på, men som jag ser det kommer den nuvarande lösningen att bli väldigt jobbig att hantera om du har många checkboxar. Det är lätt att göra fel och du måste skriva in samma ord både i koden och på formuläret.

Förutsatt att det egentliga problemet inte är mycket annorlunda mot vad du frågat hjälp om, så skulle
jag skulle lösa detta på följande sätt. Dra ut en CheckedListBox på formuläret och sedan använd liknande kod:

using System; using System.Text; using System.Windows.Forms; namespace CheckboxWinForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); // Skapa en array med strängar // För varje sträng i array:en skapas dynamiskt en checkbox i listan, like magic checkedListBox1.Items.AddRange(new string[] { "You", "Were", "Here", "Not", "Me" }); } private void button1_Click(object sender, EventArgs e) { StringBuilder sb = new StringBuilder(); // Loopa genom alla "checkade" checkboxar och plocka ut Word // CheckedIndices är en lista av index till alla checkboxar som är "checkade" foreach (int i in checkedListBox1.CheckedIndices) { // Bygg en sträng med alla orden från alla ikryssade checkboxar sb.AppendFormat("{0} ", checkedListBox1.Items[i]); } // Lägg ut resultatet i vår Label label1.Text = sb.ToString(); } } }