Hey, ich habe ein Problem mit einen threadübergreifenden Vorgang.
Ich möchte ein Panel hinzufügen. Das mache ich mit SplitContailer.Panel2.Controls.Add(pa[i, a]); //pa ist ein Array aus Panels
Klappt super, jetzt möchte ich es bisschen smoother gestanden und es mit Threads umsetzten.
Er sagt mir "Ungültiger threadübergreifender Vorgang", deswegen habe ich versucht es mit dem Snippet von florian0 zu umgehen (LINK)
Jetzt bekomme ich den Fehler: MainForm enthält bereits eine Definition für SetPanelControllAdd...
Vielleicht könnt ihr mir weiterhelfen
Code:
Code
- private delegate void SetPanelControllAdd(Panel pa);
- private void SetPanelControllAdd(Panel pa){
- // Invoke nötig?
- if (pa.InvokeRequired)
- {
- // Invoke nötig
- pa.Invoke(new SetPanelControllAdd(pa));
- }
- else
- {
- // Kein Invoke nötig - Vorgang sicher durchführbar
- SplitContailer.Panel2.Controls.Add(pa);
- }
- }
- private void createFrame(){
- pa = new Panel[cf.breite, cf.höhe];
- int x = 0;
- int y = 0;
- for (int i = 0; i < cf.breite; i++)
- {
- for (int a = 0; a < cf.höhe; a++)
- {
- pa[i, a] = new Panel();
- pa[i, a].Visible = true;
- pa[i, a].BackColor = Color.Black;
- pa[i, a].Width = 40;
- pa[i, a].Height = 40;
- pa[i, a].Location = new Point(x, y);
- pa[i, a].BorderStyle = BorderStyle.FixedSingle;
- pa[i, a].MouseHover += new EventHandler(Panels_Hover);
- pa[i, a].Click += new EventHandler(Panels_Click);
- //SplitContailer.Panel2.Controls.Add(pa[i, a]); Hier der Fehler mit dem Threadübegreifenden
- SetPanelControllAdd(pa[i, a]); //Hier der 2te Fehler
- x += 40;
- }
- y += 40;
- x = 0;
- }
- }
MfG Waschi