Есть ли у формы окна что-нибудь, чтобы однозначно идентифицировать это?
У меня есть куча форм, которые мне нужно поместить в список, и я знаю, есть ли там форма.
По причинам, не относящимся к этому вопросу, я не могу на самом деле ссылаться на форму в списке.
Есть ли идентификатор или Guid на winform, который я мог бы использовать? Или мне просто добавить Guid для всех моих форм?
Обратите внимание, что это Compact Framework. Таким образом, "ID" должен быть доступен в.NETCF 3.5.
4 ответа
Оконная ручка (hWnd
) должен сделать свое дело. Ищите Handle
собственность ваших форм.
Я не знаю ни одного удостоверения личности, присутствующего в winform. Таким образом, я считаю, что ваш подход к использованию GUID для каждого экземпляра формы может быть жизнеспособным решением. Ваша форма - это просто класс, объект со свойствами, я не вижу конкретной причины, по которой MS добавила бы идентификатор для идентификации конкретной формы, поскольку это действительно конкретное требование, только мое мнение.
Form.Name (унаследованный от Control) также может сделать свое дело.
Я не очень разбираюсь в Compact Framework. Я бы посмотрел на Form.Tag
имущество. Если есть, используйте его. Это свойство предназначено для использования по желанию программиста.
В противном случае вы можете просто обобщить класс FormBase, от которого наследуются ваши другие формы. Добавьте в него свойство Guid, чтобы получить к нему доступ для проверки существования формы в списке.
Кроме Contains
Метод принимает объект в качестве аргумента, поэтому передача экземпляра ожидаемой формы скажет вам, находится ли ваша форма в списке. Хотя это может быть немного излишним, так как вам нужно создать экземпляр формы, чтобы проверить ее существование в списке.
Другой способ обойти это использование Dictionary<Tkey, TValue>
где вы можете добавить имя формы для части словаря TKey, а также форму для TValue.