Есть ли у формы окна что-нибудь, чтобы однозначно идентифицировать это?

У меня есть куча форм, которые мне нужно поместить в список, и я знаю, есть ли там форма.

По причинам, не относящимся к этому вопросу, я не могу на самом деле ссылаться на форму в списке.

Есть ли идентификатор или 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.

Другие вопросы по тегам