Entwickler-Ecke

WinForms - Threadübergreifende veränderungen an der Form


Necaremus - Do 16.09.10 13:27
Titel: Threadübergreifende veränderungen an der Form
Hi,

wie krieg ich es hin, dass ich aus einem seperatem thread die form bearbeiten kann?
wollte ein paar buttons enablen/disablen... aber bekomm halt immer ne exception :D

wäre für nen kleines snippet sehr dankbar ^^


Th69 - Do 16.09.10 13:31

Stichwort: Control.Invoke bzw. Control.BeginInvoke, s.a. http://www.mycsharp.de/wbb2/thread.php?threadid=33113


Necaremus - Mi 29.09.10 08:04

mal doofe frage:

warum wirft der code ne out-of-range exception (101 ist größer als MaxValue)

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
delegate void IntParameterDelegate(int value);
        public void SetProgBarValue(int value)
        {
            if (progressBar.InvokeRequired)
            {
                if (value > 100// überflüssig, aber ich habs einfach nochmal eingebaut um zu zeigen, was ich meine
                    value = 100;
                progressBar.Invoke(new IntParameterDelegate(SetProgBarValue), new object[] { value });
                return;
            }
            progressBar.Value++;
            progressBar.Value--;
            progressBar.Value = value;
        }

        private void SimpleProgressBarChanger()
        {
            int value = 0;
            while (doProgBarChange)
            {
                if (value == 100)
                    value = 0;
                SetProgBarValue(++value);
                Thread.Sleep(350);                
            }
        }


danielf - Mi 29.09.10 09:56

Hallo,

deine progressbar hat eine Eigenschaft Namens MaxValue. Diese legt fest was der höchste bzw. (MinValue) der niedrigste Wert für den Progressbar ist. Standard ist 0 und 100, was wohl daran liegt, dass man praktisch 0-100% so Abbilden kannst. Du solltest also deinen Fortschritt auf 100 skalieren oder die Progressbar Wertebereich anpassen.

Gruß


Ralf Jansen - Mi 29.09.10 10:12

Zitat:
warum wirft der code ne out-of-range exception (101 ist größer als MaxValue)


Wo im Code?


C#-Quelltext
1:
progressBar.Value++;                    



hier? Dann sollte dich das nicht wundern.


Necaremus - Mi 29.09.10 10:15

ja, der pbar hack war dran schuld, müsste mit -- statt ++ anfangen^^
dass ich das nicht selber gesehen habe...


Th69 - Mi 29.09.10 10:54

Zitat:

progressBar.Value++;
progressBar.Value--;
progressBar.Value = value;

Was sollen die oberen zwei Zeilen denn eigentlich bewirken?