Laden...

Aus Variablennamen zugehöriges Panel finden und damit arbeiten

Erstellt von Simon777 vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.310 Views
S
Simon777 Themenstarter:in
2 Beiträge seit 2019
vor 5 Jahren
Aus Variablennamen zugehöriges Panel finden und damit arbeiten

Hallo liebes Forum,

ich habe folgendes Problem, es gibt verschiedene Panel, und diese werden von verschiedenen Buttons aufgerufen. Die Namen der Panel sind ähnlich gestaltet wie die Texte der Buttons.

Wie bekomme ich es hin aus einer Variable den Namen des Panels zu erstellen und so (wahrscheinlich explizit) umzuwandeln dass ich den Code ausführen kann.

Vielen Dank im voraus für eure Mithilfe.

Habe es jetzt schon mit verschiedenen Wegen und Code-Zeilen probiert, aber nach Stunden der Google-Suche und probieren trotzdem nicht weitergekommen.

Liebe Grüße
Simon777

.NET 4.0 | Visual Studio 2017 | Windows Forms Application

H
523 Beiträge seit 2008
vor 5 Jahren

Du musst das Panel in der Controls-Liste suchen. Siehe dazu Control.ControlCollection.Find


IEnumerable<Control> found = this.Controls.Find(pnlName, true);

T
2.224 Beiträge seit 2008
vor 5 Jahren

Und zur Sicherheit solltest du auch prüfen ob dein Panel auch gefunden wurde -> Null Check!
Ansonsten solltest du auch deine Variable für den Kategorienamen mit einem kleine k beginnen.
C# hat hier einen entsprechenden Styleguide an den wir uns auch halten.

Link:
https://docs.microsoft.com/de-de/dotnet/csharp/programming-guide/inside-a-program/coding-conventions

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

S
Simon777 Themenstarter:in
2 Beiträge seit 2019
vor 5 Jahren

Vielen Dank euch erstmal für die ganzen Hinweise.

Theoretisch verstehe ich es mit dem Abfragen über die Liste. Läuft auch.

Aber sobald ich den abgefragten Wert mit BringTo Front() verknüpfe meckert er mir trozdem?!

Muss ich das ganz anders anstellen?

using System.Windows.Forms; ist eingebunden, läuft ja auch mit direktem Variablen Name.

H
523 Beiträge seit 2008
vor 5 Jahren

Du versuchst wieder mit der Variable die nur den Namen des Panels enthält zu arbeiten. Das kann nicht funktionieren. pnlName beinhaltet nur den Namen des Panels, nicht aber einen Verweis auf das Panel selber.

Versuchs mal so:

IEnumerable<Control> found = this.Controls.Find(pnlName, true);
foreach (Control control in found)
{
    control.BringToFront();
}

oder kürzer so:

if (found.Any()) found.First().BringToFront();