Autor Beitrag
TheLol
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 28.07.08 12:52 
Wenn ich die Schleife durch laufen lasse soll es immer kurz das label verändern, aber es fängt dann an zu laggen und nach einiger Zeit (iLevel mal 500ms) kommt dann nur die letzte veränderung

ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
for (int tempZaehler = 0;  tempZaehler <= iLevel; tempZaehler++)
            {
                Random Zufall = new Random();
                iFarbe[tempZaehler] = Zufall.Next(15);
                if (iFarbe[tempZaehler] == 1)
                {
                    //Thread.Sleep(500);
                    labelFarbeZeigen.Text = "Blau";
                    labelFarbeZeigen.ForeColor = Color.Blue;
                    //MessageBox.Show("1");//<-test
                }
                else if (iFarbe[tempZaehler] == 2)
                {
                    //Thread.Sleep(500);
                    labelFarbeZeigen.Text = "Rot";
                    labelFarbeZeigen.ForeColor = Color.Red;
                    //MessageBox.Show("2");//<-test
                }
                else if (iFarbe[tempZaehler] == 3)
                {
                    //Thread.Sleep(500);
                    labelFarbeZeigen.Text = "Gelb";
                    labelFarbeZeigen.ForeColor = Color.Yellow;
                    //MessageBox.Show("3");//<-test
                }
                else if (iFarbe[tempZaehler] == 4)
                {
                    //Thread.Sleep(500);
                    labelFarbeZeigen.Text = "Grün";
                    labelFarbeZeigen.ForeColor = Color.Green;
                    //MessageBox.Show("4");//<-test
                }
                //MessageBox.Show(tempZaehler.ToString());//<-test
            }


Woran liegt das? Und wie kann ich das beheben?

Moderiert von user profile iconChristian S.: Quote- durch C#-Tags ersetzt


Zuletzt bearbeitet von TheLol am Mo 28.07.08 15:51, insgesamt 1-mal bearbeitet
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mo 28.07.08 13:44 
:welcome:

Hört sich irgendwie epilepsie-induzierend an :mrgreen: , jedenfalls sollte ein Application.DoEvents() am Anfang des Schleifenrumpfes Wunder wirken. Außerdem solltest du das Random-Objekt einmal vor der Schleife erstellen und dir in der Hilfe case anschauen.
TheLol Threadstarter
Hält's aus hier
Beiträge: 9



BeitragVerfasst: Mo 28.07.08 15:55 
Danke :D,
jetzt funzt es.
Aber der Zeitraum zwischen den label verändern ist nicht so wie vor geschrieben (1500ms)
Beispiel:
Start
#0
wartet 1500ms
#1
wartet 4000ms O.o
#2
wartet 500ms
#3
wartet 1000ms
...

Könnte man das evtl auch mit einen Timer machen?
Ich kenne mich mit Timern nicht aus da das mein erstes "größeres Projeckt ist" und ich auch ansonsten noch keinen Timer verwendet habe.

Hier noch mal der code

ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
        
private void buttonStartZeigen_Click(object sender, EventArgs e)
        {
            int[] iFarbe = new int[iLevel + 1];
            buttonStartZeigen.Visible = false;
            Random Zufall = new Random();
            for (int tempZaehler = 0;  tempZaehler <= iLevel; tempZaehler++)
            {
                Application.DoEvents(); // <- !!!
                int tempZaehlerAnzeige = tempZaehler + 1;
                iFarbe[tempZaehler] = Zufall.Next(15);
                switch(iFarbe[tempZaehler])
                {
                    case 1:
                    labelFarbeZeigen.Text = "Bitte merken #" + tempZaehlerAnzeige.ToString();
                    labelFarbeZeigen.ForeColor = Color.Blue;
                    Thread.Sleep(1500);
                        break;
                
                    case 2:
                    labelFarbeZeigen.Text = "Bitte merken #" + tempZaehlerAnzeige.ToString();
                    labelFarbeZeigen.ForeColor = Color.Red;
                    Thread.Sleep(1500);
                        break;
                
                    case 3:
                    labelFarbeZeigen.Text = "Bitte merken #" + tempZaehlerAnzeige.ToString();
                    labelFarbeZeigen.ForeColor = Color.Yellow;
                    Thread.Sleep(1500);
                        break;
                
                    case 4:
                    labelFarbeZeigen.Text = "Bitte merken #" + tempZaehlerAnzeige.ToString();
                    labelFarbeZeigen.ForeColor = Color.Green;
                    Thread.Sleep(15000);
                        break;
                }
            }
            buttonWeiter.Visible = true;
        }



€dit: Hab miur was zusammen geschustert^^
ausblenden volle Höhe 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:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private int iTest = 100;
        private void buttonStart_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            iTest = iTest - 1;
            switch(iTest)
            {
                case 0:
                timer1.Enabled = false;
                iTest = 0;
                    break;
            }
            labelVerbleibendeZeit.Text = "Noch: " + iTest.ToString();
            toolStripProgressBarVerbleibendeZeit.Value = iTest;
        }
    }
}