Autor Beitrag
MetaPhy
Hält's aus hier
Beiträge: 10

Win XP

BeitragVerfasst: Sa 03.03.07 22:28 
Hallo,

ich habe einen Button programmiert das Ereignis zu simulieren, 4 Würfel zu werfen. Der Zähler wird nun stets um einen hochgezählt, wenn genau 3 gleiche Zahlen sich ergeben (am Beispiel a=b=c, man muss die Anzahl hinterher also noch mit 4 multiplizieren, da die anderen drei Fälle a=b=d, a=c=d und b=c=d fehlen). Ein kleines Wahrscheinlichkeitssimulationsprogramm.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
private void button1_Click(object sender, EventArgs e)
        {
            int zaehler = 0;

            Random rnd = new Random();
      
            for (int i=1; i<=10000; i++)
            {
                                   
            int a = rnd.Next(1,7);
            int b = rnd.Next(1,7);
            int c = rnd.Next(1,7);
            int d = rnd.Next(1,7);

            if ((a == b && a == c && a > d) || (a==b && a==c && a<d))
            {
                zaehler = zaehler + 1;
                label1.Text = Convert.ToString(zaehler);
            }
            }


Nun die Frage: Warum tut das Programm dies nicht? Ich meine: Warum wird der zum String convertierte zaehler nicht während der Laufenden Schleife ständig neu angezeigt? Im Taschenrechner geht das ganz einfach und man sieht, wie die Zahl immer größer wird, aber hier gibts erst nach dem kompletten Durchlaufen der Schleife die Zahl, obwohls im Code ja anders steht. Was tun, damits so wird? Natürlich habe ich dann auch vor i selbst als Fortschrittsanzeige anzuzeigen, macht wohl mehr Sinn.


Gruß
Hüseyin


Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 03.03.2007 um 21:33
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Sa 03.03.07 22:40 
Hallo!

Während der Schleife wird die GUI nicht aktualisiert. Um das zu erreichen, musst Du in der Schleife Application.DoEvents(); analog zum Application.ProcessMessages; in Delphi aufrufen.

Auch hier gilt: Rufe das besser nicht in jedem Schleifendurchlauf auf, sonst wird das Ganze zu lahm. Also vielleicht in jedem 100sten Durchlauf oder so.

Grüße
Christian

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
MetaPhy Threadstarter
Hält's aus hier
Beiträge: 10

Win XP

BeitragVerfasst: Sa 03.03.07 22:52 
Und nochmals danke für deine Zeit!