Permalänk

C# Combobox problem

Hej,

Detta är mitt problem, jag har en combobox som det står exempelvis 1220 x 620 (Eget lager 80st). Det jag vill göra är att tillskriva det ett värde på exempelvis 80. För att tanken är att när jag valt 1220x620 i comboboxen så ska det värdet multipliceras med värdet jag skriver in i min textbox6;

Alltså 80x12

Det jag tänker mig är att använda mig av en IF sats. Men får inte ihop det riktigt.

if (comboBox1.SelectedItem.ToString() == "1220 x 620 (Eget lager 80st)")
{
resultat = (comboBox1 * textbox6);
}

resultat = textBox1.Text();

Permalänk
Medlem

Förmodligen för att du försöker multiplicera strängar.

Edit : *host* Eller objekt

Permalänk
Medlem

Här finns ett exempel på hur du kan göra:
http://stackoverflow.com/questions/3063320/combobox-adding-te...

I grunden bygger det hela på att Items är av typen object, och inte strängar. Så egentligen kan du peta in vilket objekt du vill där, comboboxen kommer anropa ToString() på varje objekt när texten ska renderas ut.

Permalänk
Medlem

Om du inte har jobbat med att binda objekt direkt till comboboxen så kanske du istället kan skapa en lista med dina element, namn samt nuffror för ett element. Dessa element addar du sedan till din combobox. När du sedan selectar något i comboboxen så plockar du ut vilket index som du använder för att plocka ut elementet i din lista (där du har dina nuffror du kan multiplicera hejvilt med). Denna lösning är dock helt kass om dina nuffror ska uppdateras under körning då man måste bygga om hela listan. Ananrs är det binding som gäller.

Permalänk

[QUOTE=Dalton Sleeper;15086770]Om du inte har jobbat med att binda objekt direkt till comboboxen så kanske du istället kan skapa en lista med dina element, namn samt nuffror för ett element. Dessa element addar du sedan till din combobox. När du sedan selectar något i comboboxen så plockar du ut vilket index som du använder för att plocka ut elementet i din lista (där du har dina nuffror du kan multiplicera hejvilt med). Denna lösning är dock helt kass om dina nuffror ska uppdateras under körning då man måste bygga om hela listan. Ananrs är det binding som gäller.[/QUOTE]

Nu har jag fått till detta:

public Form1() { InitializeComponent(); List<Askivor> ft = new List<Askivor>(); ft.Add(new Askivor() { Värde = 80, Name = "1220 x 620 (Eget lager 80st)"}); ft.Add(new Askivor() { Värde = 80, Name = "1220 x 620 (Holland 80st)" }); ft.Add(new Askivor() { Värde = 75, Name = "1220 x 620 (Regina 75st)" }); ft.Add(new Askivor() { Värde = 75, Name = "1220 x 620 (Älvsbyhus 75st)" }); comboBoxA.DataSource = ft; comboBoxA.DisplayMember = "Name"; } private void comboBoxA_SelectedIndexChanged(object sender, EventArgs e) { Askivor ft1 = comboBoxA.SelectedItem as Askivor; textBox1.Text = Convert.ToString(ft1.Värde); //värde*80; }

Har gjort en klass nu med get set i.
Men hur gör jag för att multiplicera värdet 80 exempelvis med det värde jag skriver in i en textbox? Svaret ska sedan visas i en annan Textbox sen. Bara jag får hjälp med det så lär jag lista ut resten. :t

Hängde du med?

Permalänk
Medlem

Det här förutsätter att Askivor.Värde är en int

int x; if(int.TryParse(textBox1.Text, out x)) { textBox2.Text = (x * 80).ToString(); } else { //värdet i textboxen var inte något som kunde konverteras till en int, gör någon form av felhantering, typ visa ett meddelande }