Avatar billede koppelgaard Praktikant
29. juni 2010 - 14:08 Der er 13 kommentarer og
1 løsning

Listbox index kan ikke ændres

Jeg vil gerne ændre en aflæse listboxindex med en baggrundstråd.
Kan desværre ikke få lov.

Fejlen er følgende
Cross-thread operation not valid: Control 'listBox_Pressure' accessed from a thread other than the thread it was created on.

Jeg skal vel bruge en deligate til af aflæse med, men hvordan laver man sådan en?

Har følgende til at ÆNDRE index:
private delegate void ListboxDelegate(int index);
private void ChangeListbox(int index)
        {
            if (listBox_Pressure.InvokeRequired)
                listBox_Pressure.Invoke(new ListboxDelegate(ChangeListbox),index);
            else
            {
                listBox_Pressure.SelectedIndex = index;
                listBox_Pressure.Refresh();
            }
        }

men den kan jo ikke bruges.
Avatar billede Syska Mester
29. juni 2010 - 23:42 #1
say woot ...

Hvad siger du giver overstående fejl?
Avatar billede koppelgaard Praktikant
30. juni 2010 - 08:28 #2
Åh ja det glemte jeg at skrive præcist.
Linien:
if (listBox_Pressure.TopIndex != listBox_Pressure.SelectedIndex)
{
bla bla
}

giver problemet.
/M
Avatar billede koppelgaard Praktikant
30. juni 2010 - 08:29 #3
Og jeg synes det er underligt, at der er en "get", der giver og ikke en "set" der giver problemet.
Avatar billede Syska Mester
03. juli 2010 - 00:48 #4
Ja, jeg er i hvert fald tom for ideer ... troede kun det var "set" der gav de problemer. Men det tyderoverstående så på at det ikke kun er.

mvh
Avatar billede koppelgaard Praktikant
03. juli 2010 - 08:44 #5
Har faktisk også problemer med set.
Kommer aldrig ind og får ændret index.
Avatar billede Syska Mester
03. juli 2010 - 12:34 #6
Lav et ultra minimalt eksemple som genskaber problemet ved dig, og så smid det online ... så vil jeg kigge på det.

mvh
Avatar billede koppelgaard Praktikant
03. juli 2010 - 13:47 #7
Tak det vil jeg gøre.
Kan desværre ikke komme i kontakt med min computer på arbejde.
Der er noget råddent ved forbindelsen.
Måske først på mandag -  øv
Avatar billede koppelgaard Praktikant
05. juli 2010 - 19:22 #8
Hej Buzzzz. Nåede ikke at lave eksemplet i dag. Og nu er det ferie - 3  uger :-)
Vender tilbage efter ferie.

/K
Avatar billede peppino Nybegynder
31. august 2010 - 13:43 #9
this.Invoke(new Action(delegate{
if (listBox_Pressure.TopIndex != listBox_Pressure.SelectedIndex)
{
bla bla
}
}));

Hvad med dette, gjorde det nogen forskel?
Avatar billede koppelgaard Praktikant
01. september 2010 - 12:56 #10
tak for dit input!
Jeg har fået det til at virke via delegate:

private void ListboxSelectNextItem()
        {           
            if (listBox_Pressure.InvokeRequired)
                listBox_Pressure.Invoke(new ListboxDelegate(ListboxSelectNextItem));
            else
            {
                int index = listBox_Pressure.SelectedIndex+1;
                if (index < listBox_Pressure.Items.Count)
                {
                  Bla bla
                }
                else
                {
                  Bla bla
                }
            }           
        }

Men med din metode slipper jeg for at erklære en delegate, så den vil jeg bruge en anden gang.

jeg vil meget gerne donere point for din hjælp.
Sender du et svar?

Buzzzz du må også hellere sende et svar for den hjælp, endnu engang!
Og undskyld den lange ventetid.

Michael
Avatar billede Syska Mester
01. september 2010 - 18:16 #11
Tror du har set forkert ... synes ikke rigtig jeg er kommet med noget til det her spm.

mvh
Avatar billede koppelgaard Praktikant
02. september 2010 - 10:36 #12
Du har da set på spørgsmålet - men okay - det er op til dig :-)
Avatar billede Syska Mester
02. september 2010 - 19:25 #13
Ja, det kan der være noget om ...

Men 20 point er nok ... så meget har jeg jo ikke gjort.

svar.
Avatar billede koppelgaard Praktikant
03. september 2010 - 11:26 #14
Jeg flotter mig og giver dig 60 alligevel :-)
Jeg får nok hjælp en anden gang.
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