Also hat ein System.Windows.Forms.Control
eine Controls
-Eigenschaft vom Typ Control.ControlCollection
. Ich habe eine Steuerung auf einem Formular, die eine Vielzahl kleiner Untersteuerungen in dieser Sammlung hat. Diese Untersteuerungen haben ein Label und einen Textbezeichner, der der Feldname aus einer Datenbank ist.
Ich muss in der Lage sein, zurück in die Controls
-Sammlung zu gehen und die Steuerungen nach Namen zu finden. Die ControlCollection
hat einen public virtual Control this[string key] { get; }
und einen public virtual bool ContainsKey(string key)
, also scheint es, als ob ich sie suchen könnte.
Die Add-Funktion (public virtual void Add(Control value)
) akzeptiert jedoch keinen Schlüssel-String, sondern nur die System.Windows.Forms.Control
, die Sie hinzufügen, und alle meine Aufrufe von ContainsKey
geben false zurück.
Da ich dachte, dass etwas am Control
überschrieben werden muss, um der Schlüssel zu sein (da nur das Control
übergeben wird), habe ich versucht, ToString()
zu überschreiben, um den Datenbankfeldnamen zurückzugeben (den ich für die Suche verwenden möchte), aber ContainsKey
gibt immer noch false zurück, obwohl ich weiß, dass eine Steuerung für das angegebene Feld vorhanden ist.
Die Dokumentation für this[string key] { get; }
besagt, dass der Schlüsselparameter "Der Name der Steuerung ist, der aus der Steuerungssammlung abgerufen werden soll." Das Control
hat keine Name-Eigenschaft, die ich überschreiben kann, seine einzige Name-Eigenschaft enthält den Klassennamen, der für jede hinzugefügte Steuerung gleich sein wird. Die Dokumentation für ContainsKey(string key)
besagt, dass der Schlüsselparameter "Der zu lokalisierende Schlüssel" ist, was noch weniger hilfreich ist.
Ich habe die Antwort gefunden, aber ich habe bereits all dies geschrieben, also könnte ich es genauso gut veröffentlichen und dann selbst beantworten, falls es für jemand anderen nützlich sein könnte...