Autor Beitrag
InCoBra
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 43



BeitragVerfasst: Sa 23.05.09 17:45 
Hallo,

ich habe eine Frage, die zwar eigentlich vielleicht nicht allzu wichtig ist und ich weiß, dass man es anders lösen könnte, ich frage mich aber, ob es die Funktion gibt in C# die ich mir vorstelle.

ausblenden 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:
String[] PortList = System.IO.Ports.SerialPort.GetPortNames();

for (Int32 i = 0; i < PortList.Count(); i++)
{
   Button _Button = new Button()
   {
      Name = ("button_Port" + (i + 1).ToString()),
      Text = PortList[i],
      Width = 200,
      Height = 100
   };

   _Button.Click += new EventHandler((param_Sender, param_e) =>
   {
      this._PortName = PortList[i]; // *
      this.Close();
   });

   this.flowLayoutPanel_PortList.Controls.Add(_Button);

/*
 * Genau hier liegt das Problem. Wenn ich jetzt z.B. nur einen COM-Port habe, 
   dann wird hier nicht i = 0, sondern i = 1 genommen. Obwohl bei dem Zeitpunkt, 
   wo der EventHandler erstellt wird, i noch 0 ist. Die Frage ist, ob es eine
   Möglichkeit gibt, den aktuellen Wert für i dort zu nutzen.
*/

}


Ich hoffe ich habe mein Problem einigermaßen verständlich erklärt. Aber wie gesagt, ich wüsste wie man das sonst lösen könnte, es geht mir aber darum, ob es eine Funktion wie "ActualValueOfVar" oder so gibt :)

Liebe Grüße und schonmal vielen Dank,
InCoBra
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 24.05.09 20:36 
Übertrage innerhalb der Schleife den "aktuellen Wert" in eine neue Variable, denn die bleibt ja dann konstant:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
for (Int32 i = 0; i < PortList.Count(); i++) {
  int j = i;
  
  ...
}


Aber warum nicht gleich eine foreach-Schleife über PortList (lokale Variablen bitte kleinschreiben)? i direkt benutzt du nur bei der Name-Eigenschaft, aber die wirst du wahrscheinlich sowieso nicht brauchen.

PS: Verwende bei ILists direkt Count statt Count(). Außerdem: "aktuell" != "actual" ;)

_________________
>λ=