Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
Hallo
ich wollte in Windows Forms App einen Button mit 2 variablen i und o ansteuern. in VB Controls("Button" & i & o).Text = ""
aber ich habe keinen Lösungsweg in C# gefunden!
Kann mir da wer helfen?
Danke im voraus
@Hancock wenn ich ein Binding auf die Buttons lege, werden die doch vom jeweiligen Objekt angesteuert und somit auch entsprechend der Inhalt an diese verwiesen? Sei es de-/aktivieren, ändern vom angezeigten Text o.Ä.
Dafür gibt es auch PropertyChanged. Das mag zwar vielleicht alles etwas oversized sein, wäre aber theo. gesehen der richtige Weg. Kurz: Für das "bisschen" ist der Spaß oversized, Reflexion ist schon ein Ansatz hier.
Andernfalls kann ich das PostSharp-Framework nur ans Herz legen.
Das Problem ist immer, dass die Idee, dass man Daten- und String-getrieben auf Elemente zugreifen will.
Aber ich hab grade noch mal nachgedacht (und gegooglet): Die Form hat ein Element "Controls", das könnte man durchlaufen und bei jedem Control nach dem Namen schauen. (Scheinbar wird der Name des Controls mitgespeichert.)
Mglw. funktioniert daher sowas wie
Code:
var form=this;
var name="...";
Control btn=null;
foreach(var control in form.Controls){
if(control.name==name){
btn=control;
break;
}
}
btn.Text="Hallo";
Wäre es nicht sinniger mittels dem u.g. Beispiel? Die Schleife zu durchlaufen, für eine "nur" deklarierte Variable ist wohl eher unnütz, als Vorteilhaft. Du durchläufst ja letztlich alle Control-Elemente. Das ganze kann natürlich auch ungeahnt ausgeweitet werden. Je nachdem, wie der TA das möchte. 😉😋
Code:
Control MyControl = form.Controls.Cast<Control>().FirstOrDefault(Entity => Entity.GetType() == typeof(Button) && Entity.Name == "Hello_World");
if (MyControl is null) throw new Exception("control not found");
Der Autor will den Button mittels Variablen ansprechen. Also wird er NICHT um DataBinding sowie PropertyChanged herum kommen, korrekterweise. Anderenfalls muss er die Buttons vorher zwischenspeichern, mit einer Schleife durchlaufen und dann setzen. Das ist aber sicherlich nicht eleganter gelöst, als das erstere..