Avatar billede majbom Novice
17. januar 2006 - 18:37 Der er 32 kommentarer og
1 løsning

problem med valgt item i combobox

godaften eksperter

jeg sidder og roder med et prog i Visual Studio 2005 og jeg har en combobox med tallene 1-10 og nogle textboxe osv som indeholder noget data fra et listview. problemet er at jeg ikke ved hvordan jeg skal tildele denne combobox den værdi der bliver hentet fra listviewen. Jeg har en anden combobox med nogle text-items hvor jeg bruger .SelectedItem = lvi.SubItems[3].Text; og det virker, men jeg kan ikke bruge den, når det er tal i stedet for tekst...
jeg har efterhånden prøvet lidt af hvert synes jeg, men kan ikke rigtig få det til at spille...

nogle der har en ide?

på forhånd tak
Avatar billede Syska Mester
17. januar 2006 - 19:00 #1
for (int i = 0; i < 10; i++)
{
    comboBox1.Items.Add(i);
}

comboBox1.SelectedIndex = comboBox1.Items.IndexOf(4);

// ouT
Avatar billede Syska Mester
17. januar 2006 - 19:01 #2
Det selecter i hvert fald værdien 4 på min computer, og håber det var det du manglede ellers må du lige sige til.....

// oUT
Avatar billede majbom Novice
17. januar 2006 - 19:13 #3
det virker ikke hos mig...

cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(Convert.ToInt32(lvi.SubItems[3].Text));
Avatar billede Syska Mester
17. januar 2006 - 19:33 #4
Hvordan fylder du din combobox?

Hvad indeholder lvi.SubItems[3].Text helt præcis? Hvad sker der?

// ouT
Avatar billede majbom Novice
17. januar 2006 - 19:43 #5
jeg fylder min combobox på samme måde som du gør i din første kommentar

lvi.SubItems[3].Text indeholder værdien 4
Avatar billede Syska Mester
17. januar 2006 - 19:46 #6
Hvad fejl får du så siden det ikke virker.... min virker nemlig :-)

Sikker på den værdi er hvad du tror den er?

// ouT
Avatar billede Syska Mester
17. januar 2006 - 19:49 #7
Følgende virker også....
for (int i = 0; i < 10; i++)
{
    comboBox1.Items.Add(i);
}
string tal = " 8 ";
comboBox1.SelectedIndex = comboBox1.Items.IndexOf(Convert.ToInt32(tal));

Må være den værdi der kommer fra det felt, ikke er hvad du regner med....
Avatar billede majbom Novice
17. januar 2006 - 20:42 #8
jeg har udlæst den værdi i en messagbox, og der står der 4...
Avatar billede majbom Novice
17. januar 2006 - 21:04 #9
jeg har osse prøvet at skrive "4" i stedet for lvi.SubItems[3].Text...
Avatar billede bitsch Nybegynder
17. januar 2006 - 22:20 #10
Noget helt andet...

Hvis du kun skal vælge mellem heltal, har du så overvejet om System.Windows.Forms.NumericUpDown er noget for dig som alternativ til din ComboBox?
Avatar billede Syska Mester
17. januar 2006 - 22:21 #11
samme fejl?

Prøv at smide lidt kode som fejler ved dig, så kan jeg da lige teste.....

bitsch har måske fat i den lange ende....

Der kan du i hvert fald nemt sætte MaxVal og MinVal, og nemt tilføje hvad værdi den skal have...........

// ouT
Avatar billede bitsch Nybegynder
17. januar 2006 - 23:00 #12
Hvis man alligevel hellere vil bruge en ComboBox, så kan det løses som følger:

int indexToFind = 8;
int selectedIndex = this.comboBox1.FindStringExact(indexToFind.ToString());
this.comboBox1.SelectedIndex = selectedIndex;
Avatar billede bitsch Nybegynder
17. januar 2006 - 23:01 #13
Eksemplet antager at items bliver added som følger:

for (int i = 0; i < 10; i++)
{
    this.comboBox1.Items.Add(i);
}
Avatar billede bitsch Nybegynder
17. januar 2006 - 23:06 #14
Bemærk at FindStringExact returnerer -1 hvis værdien ikke blev fundet. I et sådant tilfælde kan du vælge at sætte SelectedIndex til 0, hvis du kræver at der altid er valgt en value.
Avatar billede Syska Mester
17. januar 2006 - 23:21 #15
hvis combobox er sat til "DropDownList" er der jo også altid 1 selected....

Men det andet skulle jo også virke.....

der må være noget galt et andet sted i hans kode.......

// ouT
Avatar billede bitsch Nybegynder
17. januar 2006 - 23:26 #16
Nope! hvis du sætter index til -1 er intet selectet (prøv selv)

så i stedet gør som følger:

this.comboBox1.SelectedIndex = Math.Max(selectedIndex, 0);
Eller tilsvarende...
Avatar billede Syska Mester
17. januar 2006 - 23:29 #17
ja :-)

Well, siden det (mit første eksempel) ikke virker i hans program, er jeg ret sikker på der er noget galt....

Men kan jo ske dit virker i det her tilfælde, ved sq ikke :-)

men det kan splazz nok fortælle os om i morgen, hvis han allerede er smuttet i seng :-)

// ouT
Avatar billede bitsch Nybegynder
17. januar 2006 - 23:36 #18
Ja der er jo mange løsningsmuligheder. Personligt ville jeg vælge NumericUpDown da den er bygget til formålet.
Anvender man derimod en ComboBox ville jeg vælge min løsning da man derved eliminerer flere fejlmuligheder så som "IndexOutOfRangeException", og metoderne FindString og FindStringExact er der jo for at kunne blive brugt, og så bliver koden også pæn at læse :-)
Avatar billede Syska Mester
18. januar 2006 - 00:36 #19
jeps, ville også vælge Numeric :-)

Hvor ville du få "IndexOutOfRangeException" i min? min retuenere jo også -1 hvis den ikke findes....

// ouT
Avatar billede bitsch Nybegynder
18. januar 2006 - 06:27 #20
Du har ret, det får man heller ikke så længe man bruger IndexOf, sorry
Avatar billede majbom Novice
18. januar 2006 - 14:14 #21
hold da op alle de indlæg siden jeg smuttede i seng :)

men virker det ikke underligt at: "cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(Convert.ToInt32(4);" heller ikke virker? jeg har fyldt comboboxen på samme måde som i første eksempel, dog ikke lige før denne programstump udføres...
Avatar billede Syska Mester
18. januar 2006 - 14:20 #22
cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(Convert.ToInt32(4);
der mener du vel:
cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(Convert.ToInt32("4"));

eller er det jo klart det ikke virker :-)

// ouT
Avatar billede majbom Novice
18. januar 2006 - 14:26 #23
jeg mener cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(4); :) det gik lidt stærkt
Avatar billede Syska Mester
18. januar 2006 - 14:34 #24
Men post noget af dit kode, det kan slet ikke passe at det ikek virker, der må være noget mere galt :-)

// ouT
Avatar billede majbom Novice
18. januar 2006 - 14:35 #25
prøver jeg når jeg kommer hjem...
Avatar billede majbom Novice
18. januar 2006 - 20:43 #26
private void redigerToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tabControl.SelectTab(1);
            if(conn != null){
                try{
                    int i;
                    for (i = 1; i <= 30; i++)
                    {
                        cmbNewQCD.Items.Add(i);
                    }
                   
                    IEnumerator selCol = lvwReq.SelectedItems.GetEnumerator();
                    selCol.MoveNext();
                    ListViewItem lvi = (ListViewItem)selCol.Current;
                    txtNewQMaker.Text = lvi.SubItems[1].Text;
                    txtNewQTitle.Text = lvi.SubItems[2].Text;
                    //???MessageBox.Show(lvi.SubItems[3].Text);
                    cmbNewQCD.SelectedIndex = cmbNewQCD.Items.IndexOf(lvi.SubItems[3].Text);
                    cmbNewQType.SelectedItem = lvi.SubItems[4].Text;

det er lige der det driller...
der bliver ikke valgt noget tal i cmbNewQCD, der står bare "Antal" som er blevet sat tidligere...
Avatar billede Syska Mester
18. januar 2006 - 20:58 #27
//???MessageBox.Show(lvi.SubItems[3].Text);

og den her udksriver hvad der nu måtte stå i lvi.SubItems[3].Text?

og du er sikker på der ikke kommer nogen exceptions?

// ouT
Avatar billede majbom Novice
18. januar 2006 - 21:24 #28
ja og ja :)

//???MessageBox.Show(lvi.SubItems[3].Text); = 4
og der kommer ingen exceptions...
Avatar billede Syska Mester
18. januar 2006 - 21:28 #29
sært, et sted er der en fejl, bare med at finde den :-)

// ouT
Avatar billede majbom Novice
19. januar 2006 - 07:14 #30
tror jeg prøver at lave et lille program KUN med koden fra første eksempel og ser om det virker... :S
Avatar billede Syska Mester
19. januar 2006 - 13:21 #31
Virker i hvert fald på min computer :-) Så hvis det ikke virker på din, så er der sq et eller andet helt galt :-)

// ouT
Avatar billede majbom Novice
19. januar 2006 - 20:12 #32
okay, dette giver absolut ingen mening, eller har jeg bare været for træt, sidste gang jeg kiggede på det:

jeg prøvede at lave et lille prog som kun havde en combobox, og der virkede det, derefter prøvede jeg igen med problembarnet og nu virker det fint... :S

mange tak for hjælpen :)

-> buzzzz - jeg har brugt eksemplet fra din første kommentar, så hvgis du lige smider et svar, så får du en 50'er :)

go' weekend alle sammen! ;)
Avatar billede Syska Mester
19. januar 2006 - 21:53 #33
LOL, der kan man bare se :-)

svar

// ouT
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