Avatar billede fynbo Nybegynder
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)
Avatar billede sovsekoder Nybegynder
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");
Avatar billede fynbo Nybegynder
01. november 2004 - 13:55 #2
skal du absolut hjælpe mig hver gang? ;)
Avatar billede sovsekoder Nybegynder
01. november 2004 - 13:56 #3
haha :) kan jeg ligge et svar?
Avatar billede fynbo Nybegynder
01. november 2004 - 13:58 #4
nej, fordi din løsning virker ikke :(
Avatar billede fynbo Nybegynder
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 :)
Avatar billede sovsekoder Nybegynder
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:
Avatar billede sovsekoder Nybegynder
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;
    }
  }
}
Avatar billede sovsekoder Nybegynder
01. november 2004 - 14:06 #8
hvor man så kalder FindTheItem("Tre");
Avatar billede sovsekoder Nybegynder
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)
{
...
}
Avatar billede sovsekoder Nybegynder
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.
Avatar billede sovsekoder Nybegynder
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
Avatar billede sovsekoder Nybegynder
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");
Avatar billede fynbo Nybegynder
01. november 2004 - 14:30 #13
Fungerer ikke..
Avatar billede sovsekoder Nybegynder
01. november 2004 - 14:32 #14
jeg har lige testet det, hvor det virker
Avatar billede fynbo Nybegynder
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
Avatar billede sovsekoder Nybegynder
01. november 2004 - 14:35 #16
når jeg bruger din kode, står der et, to, tre, fire (altså som strenge) i comboboxen
Avatar billede fynbo Nybegynder
01. november 2004 - 14:38 #17
Doh.. min skyld.. smid et svar :(
Avatar billede fynbo Nybegynder
01. november 2004 - 14:39 #18
men hvordan får jeg så 1,2,3,4 til at stå i comboboxen?
Avatar billede fynbo Nybegynder
01. november 2004 - 14:41 #19
glem mit sidste spørgsmål, har fået det til at fungere :)
Avatar billede sovsekoder Nybegynder
01. november 2004 - 14:41 #20
np! <svar>
Avatar billede sovsekoder Nybegynder
01. november 2004 - 14:42 #21
ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester