Ich arbeite an einer Anwendung, die Objekte (im Grunde Windows Forms -Steuerelemente) zur Laufzeit aus einer XML-Datei hinzufügt. Die Anwendung muss auf die hinzugefügten Objekte zugreifen.
Die Objekte werden in einem Panel oder in einer Groupbox hinzugefügt. Für Panel und Groupbox habe ich Panel.Controls ["object_name"], um auf die Objekte zuzugreifen. Dies ist nur hilfreich, wenn das Objekt direkt auf demselben Bedienfeld hinzugefügt wird. In meinem Fall enthält das Hauptfenster [pnlMain, ich habe nur Zugriff auf dieses Feld] möglicherweise ein anderes Feld und dieses Feld [pnlChild] enthält wieder ein groupbox [gbPnlChild] und das groupbox enthält eine Schaltfläche [button1, ich möchte auf diese Schaltfläche zugreifen] . Ich habe dafür folgende Methode:
%Vor%Die obige Methode ist hilfreich, wenn Eltern bekannt sind. In meinem Szenario ist nur der Name des Objekts bekannt, auf das zugegriffen werden soll [button1] und nicht seine Eltern. Also wie greife ich auf dieses Objekt durch seinen Namen, unabhängig von seinem Elternteil?
Gibt es eine Methode wie GetObject ("objName") oder etwas ähnliches?
Sie können die Controls.Find () Methode zum Abrufen einer Referenz zurück:
%Vor%Beachten Sie, dass dies ein Array zurückgibt , die Name-Eigenschaft eines Steuerelements kann mehrdeutig sein, es gibt keinen Mechanismus, der sicherstellt, dass ein Steuerelement einen eindeutigen Namen hat. Sie müssen das selbst erzwingen.
.NET Compact Framework unterstützt Control.ControlCollection.Find nicht.
Siehe Control.ControlCollection-Methoden und beachten Sie, dass neben der Suchmethode kein kleines Telefonsymbol angezeigt wird.
Definieren Sie in diesem Fall die folgende Methode:
%Vor%Dann benutze es so:
%Vor%