Есть ли у формы окна что-нибудь, чтобы однозначно идентифицировать это? - PullRequest
0 голосов
/ 29 ноября 2010

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

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

Есть ли идентификатор или Guid на winform, который я мог бы использовать?Или мне просто добавить Guid для всех моих форм?

Обратите внимание, что это Compact Framework.Таким образом, «ID» должен быть доступен в .NETCF 3.5.

Ответы [ 4 ]

4 голосов
/ 29 ноября 2010

Ручка окна (hWnd) должна сделать свое дело. Найдите свойство Handle ваших форм.

1 голос
/ 29 ноября 2010

Я не знаю ни одного идентификатора, присутствующего в winform. Таким образом, я считаю, что ваш подход к использованию GUID для каждого экземпляра формы может быть жизнеспособным решением. Ваша форма - это просто класс, объект со свойствами, я не вижу конкретной причины, по которой MS добавила бы идентификатор для идентификации конкретной формы, поскольку это действительно конкретное требование, только мое мнение.

0 голосов
/ 29 ноября 2010

Form.Name (унаследовано от Control) также может помочь.

0 голосов
/ 29 ноября 2010

Я не знаю много о Compact Framework. Я бы искал Form.Tag свойство. Если есть, используйте его. Это свойство предназначено для использования по желанию программиста.

В противном случае вы можете просто обобщить класс FormBase, от которого наследуются ваши другие формы. Вставьте в него свойство Guid, чтобы получить к нему доступ для проверки существования формы в списке.

Кроме того, метод Contains принимает объект в качестве аргумента, поэтому передача экземпляра ожидаемой формы скажет вам, находится ли ваша форма в списке. Хотя это может быть немного излишним, так как вам нужно создать экземпляр формы, чтобы проверить ее существование в списке.

Другой способ - использование Dictionary<Tkey, TValue>, где вы можете добавить имя формы для части словаря TKey и вашу форму для TValue.

...