[C#] Schlaufe mit Time-Delay

Danke schonmal.

Wie muss ich das PCBS Array hinzufügen? Also was für ein Datentyp muss ich nehmen?

hab da an "private Object[] pcbs = new Object { pcb1, pcb2, pcb3, pcb4, pcb5 };" gedacht, ****t aber nicht.

"Ebenfalls als Klassenmember werden Indexvariablen für "Cards" und "pcbs" erzeugt." - Das verstehe ich nicht.
 
Hallo,

ich hab mal versucht, das auf die Schnelle in deinen Code reinzuschreiben. Da dürften noch jede Menge Bugs drinnen sein, aber ich hoffe, du verstehst dann, was ich meine.

Gruß
MCoder

C#:
public partial class frmMain : Form
{
    private List<Card>    Cards = new List<Card>();
    private PictureBox [] pcbs  = new PictureBox[] { pcb1, pcb2, pcb3, pcb4, pcb5 };   
    private int           nIndexCards;
    private int           nIndexPcbs;
    private int           a;

    ...
    
    private void fillPictures(bool firsttime)
    {
        nIndexCards = 0;
        nIndexPcbs  = 0;
        a           = 0;
        
        tmrCards.Start();
    }
    
    private void tmrCards_Tick(object sender, EventArgs e)
    {
        string imagename = "_" + Cards[nIndexCards].number + Cards[nIndexCards].type;
        PictureBox t = pcbs[nIndexPcbs];
        
        if (firsttime == false)
        {
            if (nIndexPcbs < pcbs.Length )
            {
                if (Cards[nIndexCards].held == false)
                {
                    t.Image = null;
                }
                
                if (t.Image == null)
                {
                    t.Image = (Image)Properties.Resources.ResourceManager.GetObject(imagename);
                }
                
                nIndexPcbs++
                nIndexCards++;
            }
            else
            {
                tmrCards.Stop();
            }
        }    
        else
        {
            if (t.Tag == null)
            {
                t.Image = (Image)Properties.Resources.ResourceManager.GetObject(imagename);
                t.Tag = "done";
            }
            
            nIndexPcbs++;
            
            if( nIndexPcbs == pcbs.Length )
            {
                nIndexPcbs = 0;
                nIndexCards++;
            }
        }
        
        if( nIndexCards == Cards.Count )
        {
            tmrCards.Stop();
        }
    }
}
 
Hey, vielen Dank schonmal!

Ist mir einigermassen ersichtlich.

" private PictureBox [] pcbs = new PictureBox[] { pcb1, pcb2, pcb3, pcb4, pcb5 };" Diese Zeile spackt nach wie vor rum. Hab da gestern auch schon probiert das "var" zu ersetzen, brings aber nicht hin.

Hättest du da noch ne Idee?

Edit:

public frmMain()
{
InitializeComponent();

pcbs[0] = pcb1;
pcbs[1] = pcb2;
pcbs[2] = pcb3;
pcbs[3] = pcb4;
pcbs[4] = pcb5;
}


So. Probier mal den Code zum Laufen zu bringen, meld mich falls ich noch was brauch ;)


Edit2: Funktioniert alles wunderbar. Die Picturebox werden jetzt entsprechend dem Delay gefüllt. Vielen Dank! :*

Sieht nun so aus:

Code:
private int nIndexCards;
        private int nIndexPcbs;
        private int a;
        private bool firsttime = true;
        private PictureBox[] pcbs;

        public frmMain()
        {
            InitializeComponent();

            pcbs = new PictureBox[5] { pcb1, pcb2, pcb3,pcb4, pcb5};
        }

...

Code:
private void tmrCards_Tick(object sender, EventArgs e)
        {
            string imagename = "_" + Cards[nIndexCards].number + Cards[nIndexCards].type;
            PictureBox t = pcbs[nIndexPcbs];

            if (firsttime == false)
            {
                if (Cards[nIndexCards].held == false)
                {
                    tmrCards.Interval = 350;

                    if (Cards[nIndexCards].backimage == false)
                    {
                        t.Image = (Image)Properties.Resources.ResourceManager.GetObject("back");

                        Cards[nIndexCards].backimage = true;

                        return;
                    }
                    else
                    {
                        t.Image = (Image)Properties.Resources.ResourceManager.GetObject(imagename);
                    }
                }

                if (Cards[nIndexCards].held == true)
                {
                    tmrCards.Interval = 1;
                }                
                nIndexPcbs++;
                nIndexCards++;

                if (nIndexPcbs == pcbs.Length)
                {
                    tmrCards.Stop();
                }
            }
            else
            {
                if (t.Tag == null)
                {
                    t.Image = (Image)Properties.Resources.ResourceManager.GetObject(imagename);
                    t.Tag = "done";
                }

                nIndexCards++;
                nIndexPcbs++;

                if (nIndexPcbs == pcbs.Length)
                {
                    nIndexPcbs = 0;
                    nIndexCards++;
                }
            }

            if (nIndexCards == Cards.Count)
            {
                tmrCards.Stop();
            }
        }
 
Zuletzt bearbeitet:
Zurück