Dazu vielleicht ein anderer Tipp: Mit Namen dieser Art zu arbeiten ist altmodisch und unpraktisch. Dafür gibt es auch Objektorientierte Ansätze.
Beispielsweise hat jeder Button eine .Tag Eigenschaft, der ein beliebiges Objekt zugewiesen werden kann. In deinem Fall würde sich da ja das Point() Objekt (System.Drawing Namespace) anbieten, das hat eine X- und eine Y-Koordinate. So kannst du ganz einfach beim Aufruf dann auf das Tag zugreifen.
|
C#-Quelltext
|
1
2
3
4
5
6
|
//Zuweisung:
btn.Tag = new Point(5,12);
//Aufruf:
int xKoordinate = ((Point)btn.Tag).X;
int yKoordinate = ((Point)btn.Tag).Y;
|
Und so kannst du auch umgekehrt ganz einfach nach dem entsprechenden Button suchen, mit ein bisschen LINQ:
|
C#-Quelltext
|
1
|
Button btn = (from elements in this.Controls where ((Point)elements.Tag).X == 5 && ((Point)elements.Tag).Y == 12).First();
|
Oder wenn du ganz sicher gehen willst, falls noch andere Controls auf dem Formular sind:
|
C#-Quelltext
|
1
|
Button btn = (from elements in this.Controls where elements.Tag != null && ((Point)elements.Tag).X == 5 && ((Point)elements.Tag).Y == 12).First();
|
Das ist viel sauberer, moderner und objektorientierter, als (in alter VB6-Manier) mit zusammengebastelten Strings zu arbeiten.