Итак, System.Windows.Forms.Control
имеет свойство Controls
типа Control.ControlCollection
.У меня есть элемент управления в форме, в которой есть несколько небольших элементов управления.Эти субэлементы имеют метку и текстовый идентификатор, который является именем поля из базы данных.
Мне нужно вернуться в коллекцию Controls
и найти элементы управления по имени.ControlCollection
имеет public virtual Control this[string key] { get; }
и public virtual bool ContainsKey(string key)
, так что, похоже, я должен их найти.
Однако функция Add (public virtual void Add(Control value)
) не принимает строку ключапросто System.Windows.Forms.Control
, который вы добавляете, и все мои вызовы ContainsKey
возвращают ложь.
При вычислении чего-либо на Control
необходимо переопределить, чтобы он был ключом (поскольку только Control
пропущено), я попытался переопределить ToString()
, чтобы вернуть имя поля базы данных (которое я хочу использовать для поиска), но ContainsKey
по-прежнему возвращает false, когда я знаю, что элемент управления для указанного поля присутствует.
В документации для this[string key] { get; }
сказано, что ключевым параметром является «Имя элемента управления, который нужно извлечь из коллекции элементов управления».У Control
нет свойства Name, которое я могу переопределить, его единственное свойство Name содержит имя класса, которое будет одинаковым для каждого добавляемого элемента управления.В документации для ContainsKey(string key)
сказано, что ключевым параметром является «Ключ для определения местоположения», что еще менее полезно.
Найден ответ, но я уже все это написал, так что я мог бы опубликовать его, а затемответь самому себе, если кому-то это может пригодиться ...