Hi,
also. das Ganze wäre ja eigentlich einfach zu lösen. Wenn denn die Buttons in einer Collection wären, wie z.B. einem Arry oder einer List. Dann könntest Du einfach den Index in dieser Collection anhand der Zufallszahl wählen, und das Objekt dementsprechend ändern.
Wenn sich allerdings die Buttons nicht in einer Collection befinden (also durch den Designer einfach nur auf die Form platziert sind) [ja, ich weiß, eine ControlCollection ist auch eine Collection] wird es schon schwieriger. Denn in this.Controls sind halt alle Controls enthalten, bis zur 1. Stufe. Soll heißen, wenn sich z.B. weitere Controls auf einem Panel der Form befinden, so ist in der Collection zwar das Panel, aber nicht die Controls auf diesem Panel.
Wenn sich die Buttons auf der Form befinden, so könntest Du die Controls, die vom Typ Button sind und einen Namen besitzen, der identifiziert, das es halt solche Buttons sind, die die Farbe bekommen sollen, per LinQ abfragen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var buttonControls = from control in this.Controls.Cast<Control>() .Where(control => control.Name.ToLower().Contains("yourIdentifier") && control.GetType().Equals(typeof(Button))) select control;
if (buttonControls != null) { buttonControls.ElementAt(GenerierteZahl).BackColor = Color.AliceBlue; } |
Und dann kannst Du den Button auf die neue Farbe setzen. Aber besser wäre es wirklich, die Buttons, die farblich geändert werden sollen (bzw. können) in einer Collection zu halten (bei der Anzahl von 64 empfiehlt es sich eh, die Buttons dynamisch zu generiern, denke ich mal).
Hoffe, ich konnte Dir helfen.
LG, Marko