01. november 2004 - 13:49
Der er
20 kommentarer og 1 løsning
Vælge værdi i combobox
Hej, Jeg udfylder en combobox sådan her: comboBox1.Items.Add(new myItem("Et", "0")); comboBox1.Items.Add(new myItem("To", "1")); comboBox1.Items.Add(new myItem("Tre", "2")); comboBox1.Items.Add(new myItem("Fire", "3")); og myItem: class myItem { string itemValue = ""; string itemName = ""; public myItem(string itemName, string itemValue) { this.itemName = itemName; this.itemValue = itemValue; } public override string ToString() {return itemName;} public string ItemName {get {return itemName;}} public string ItemValue {get {return itemValue;}} } Som det er nu, får jeg en combobox med valgmulighederne 1,2,3 og 4. Hvis jeg nu vil vælge nummer 3 via ordet "Tre", hvordan gør jeg så? Jeg tænker ikke på comboBox1.SelectedIndex = 2; (som ville vælge nummer 3)
Annonceindlæg fra Thales
01. november 2004 - 13:53
#1
comboBox1.Items.Add("sovsekoder1"); comboBox1.Items.Add("sovsekoder2"); comboBox1.Items.Add("sovsekoder3"); comboBox1.Items.Add("sovsekoder4"); comboBox1.SelectedIndex = comboBox1.Items.IndexOf("sovsekoder3");
01. november 2004 - 13:55
#2
skal du absolut hjælpe mig hver gang? ;)
01. november 2004 - 13:56
#3
haha :) kan jeg ligge et svar?
01. november 2004 - 13:58
#4
nej, fordi din løsning virker ikke :(
01. november 2004 - 13:58
#5
Den virker fint, hvis det er en regulær combobox, med nogle valgmuligheder, men jeg har jo brug for at knytte en værdi til en tekst, og så vælge tekst ud fra værdien :)
01. november 2004 - 14:03
#6
ok, sorry - jeg var for hurtig : min tanke var at bruge: comboBox1.Items.IndexOf(....) hvor man giver den det object man gerne vil ha' index på, så du kunne gemme dine objekter (myItem): m1 = new myItem("Et", "0"); m2 = new myItem("To", "1"); m3 = new myItem("Tre", "2"); m4 = new myItem("Fire", "3"); comboBox1.Items.Add(m1); comboBox1.Items.Add(m2); comboBox1.Items.Add(m3); comboBox1.Items.Add(m4); og så sige : comboBox1.SelectIndex = comboBox1.Items.IndexOf(m3); men der er også en anden mulighed:
01. november 2004 - 14:05
#7
nemlig at løbe items igennem og "finde" den rigtige, eks: void FindTheItem(string id) { foreach(myItem i in comboBox1.Items) { if(myItem.Name == id) { comboBox1.SelectIndex = comboBox1.Items.IndexOf(i); return; } } }
01. november 2004 - 14:06
#8
hvor man så kalder FindTheItem("Tre");
01. november 2004 - 14:08
#9
ja ok. du har jo nok overwrited toString(), så den skal man så bruge istedet for .Name somjeg skrev, altså: if(myItem.toString() == id) { ... }
01. november 2004 - 14:09
#10
...og noget helt tredie er at det ofte anbefales at man bruger string.Compare(...) til sammen lign. af strenge - hvilket jeg ikke har gjort i eksemplet.
01. november 2004 - 14:12
#11
hold kæft hvor er jeg blind (undskyld sproget) - du har jo posted klassen, myItem :) - jeg ser slet ikke efter... men altså du kan så bruge FindTheItem funktionen jeg postede, bare hvor : myItem.Name udskiftes med i.toString() ...jeg har ikke compilet det
01. november 2004 - 14:14
#12
dvs: til alle der ikke gider læse alt mit vrøvl, svaret er brug denne metode: void SelectItemByName(string id) { foreach(myItem i in comboBox1.Items) { if(i.ToString() == id) { comboBox1.SelectedIndex = comboBox1.Items.IndexOf(i); return; } } } f.eks: SelectItemByName("Tre");
01. november 2004 - 14:30
#13
Fungerer ikke..
01. november 2004 - 14:32
#14
jeg har lige testet det, hvor det virker
01. november 2004 - 14:32
#15
i.ToString viser 1,2,3,4 og ikke En, To, Tre, Fire som er nødvendigt for at det fungerer
01. november 2004 - 14:35
#16
når jeg bruger din kode, står der et, to, tre, fire (altså som strenge) i comboboxen
01. november 2004 - 14:38
#17
Doh.. min skyld.. smid et svar :(
01. november 2004 - 14:39
#18
men hvordan får jeg så 1,2,3,4 til at stå i comboboxen?
01. november 2004 - 14:41
#19
glem mit sidste spørgsmål, har fået det til at fungere :)
01. november 2004 - 14:41
#20
np! <svar>
01. november 2004 - 14:42
#21
ok :)
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.