Delegate Problem C#

Gast #2682978
Lesenswert?

Hallo Freunde,
habe ein Problem bei dem ich nicht weiter weiß!
Leider sind meine C# Kenntnis sehr bescheiden.

zu meinem Problem
1
private delegate void test(string[] T);
2
        private void aktualisiere(string[] C)
3
        {
4
            for (int i = 0; i > 13; i++)
5
            {
6
                if (this.Controls.Find("textBox" + Convert.ToString(i), false)[0].InvokeRequired)
7
                {
8
                    this.Controls.Find("textBox" + Convert.ToString(i), false)[0].Invoke(new test(aktualisiere), C[i]);
9
                }
10
                else
11
                {
12
                    this.Controls.Find("textBox" + Convert.ToString(i), false)[0].Text = C[i];
13
                }
14
            }
15
        }
Wenn ich aktualisiere aufrufe passiert nichts nicht einmal ein Fehler.
Kann mir jemand erklären warum das so ist?


Gruß
Unscheinbar

PS Danke und schönes Wochenende
Gast #2683069
Lesenswert?

Wie dumm ist das denn!!
Entschuldigung für meine Dummheit.
Leider funktioniert es aber immer noch nicht.

Jetzt bekomme ich folgende Fehlermeldung  in dieser Zeile.
1
                 if (this.Controls.Find("textBox" + Convert.ToString(i), false)[0].InvokeRequired)


System.IndexOutOfRangeException wurde nicht behandelt.
  Message=Der Index war außerhalb des Arraybereichs.
  Source=atmega644 Austausch
  StackTrace:
       bei WindowsFormsApplication1.Form1.aktualisiere(String[] C) in 
C:\Users\Peter\documents\visual studio 2010\Projects\atmega644 
Austausch\atmega644 Austausch\Form1.cs:Zeile 234.
       bei WindowsFormsApplication1.Form1.data_extract() in 
C:\Users\Peter\documents\visual studio 2010\Projects\atmega644 
Austausch\atmega644 Austausch\Form1.cs:Zeile 227.
       bei 
WindowsFormsApplication1.Form1.serialPort1_DataReceived(Object sender, 
SerialDataReceivedEventArgs e) in C:\Users\Peter\documents\visual studio 
2010\Projects\atmega644 Austausch\atmega644 Austausch\Form1.cs:Zeile 82.
       bei System.IO.Ports.SerialPort.CatchReceivedEvents(Object src, 
SerialDataReceivedEventArgs e)
       bei 
System.IO.Ports.SerialStream.EventLoopRunner.CallReceiveEvents(Object 
state)
       bei 
System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object 
state)
       bei System.Threading.ExecutionContext.Run(ExecutionContext 
executionContext, ContextCallback callback, Object state, Boolean 
ignoreSyncCtx)
       bei 
System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolW 
orkItem.ExecuteWorkItem()
       bei System.Threading.ThreadPoolWorkQueue.Dispatch()
       bei 
System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
  InnerException:


Danke für die Hilfe


Unscheinbar
Gast #2683218
Lesenswert?

Hallo nochmal,
bin mit meinem Problem einen Schritt weiter.
Wenn ich die groupBox um meine Textboxen entferne dann funktioniert das 
Programm.
Wie kann ich innerhalb der Groupbox  auf meine Textboxen zu greifen ?

Danke und SWE

Unscheinbar
Gast #2683221
Lesenswert?

den Ansatz finde ich schon Merkwürdig. Warum musst du die Textboxen erst 
suchen?

Ich würde die TextBoxen selber in einem Array ablegen, dann kann man 
auch einfach darauf zugreifen.

Oder gleich dynamisch erzeugen.
Gast #2683295
Lesenswert?

So habe ich es mit den Array gelöst
1
private delegate void test(string[] T);
2
        private void aktualisiere(string[] C)
3
        {
4
            List<TextBox> tbList = new List<TextBox>();
5
            tbList.Add(textBox0);
6
            tbList.Add(textBox1);
7
            tbList.Add(textBox2);
8
            tbList.Add(textBox3);
9
            for (int i = 0; i < 4; i++)
10
            {
11
                if (tbList[i].InvokeRequired)
12
                {
13
                    tbList[i].Invoke(new test(aktualisiere), C[i]);
14
                }
15
                else
16
                {
17
                    tbList[i].Text = C[i];
18
                }
19
               
20
               
21
            }
22
Unscheinbar
23
        }
Gast #2683329
Lesenswert?

nur ein versucht:
1
private delegate void test(TextBox tb, String s);
2

3
private void aktualisiere2(TextBox tb, String s) {
4
      
5
      if (tb.InvokeRequired) {
6
         tb.Invoke(new test(aktualisiere2), tb, s );
7
      } else {
8
         tb.Text = s;
9
      }
10
}
11

12
private void aktualisiere(string[] C) {
13
   List<TextBox> tbList = new List<TextBox>();
14
   tbList.Add(textBox0);
15
   tbList.Add(textBox1);
16
   tbList.Add(textBox2);
17
   tbList.Add(textBox3);
18
      
19
   for (int i = 0; i < 4; i++) {
20
      aktualisiere2( tbList[i], C[i] );
21
   }
22
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren