Общее использование для свойства Tag - PullRequest
9 голосов
/ 29 июня 2009

Я начал использовать это много для связи элементов моего пользовательского интерфейса с их классом поддержки данных (что бы это ни было). Для каких целей вы обычно используете свойство Tag?

Действительно, ты вообще им пользуешься? Я знаю, что не очень давно.

Ответы [ 4 ]

10 голосов
/ 29 июня 2009

Как вы описываете, наиболее частое использование свойства Tag, с которым я сталкивался и использую в WinForms, WPF и Silverlight, - это отображение реальных данных, к которым относится элемент управления. Это особенно полезно в ListViewItem экземплярах или автоматически сгенерированном пользовательском интерфейсе, где вы хотите использовать один и тот же обработчик событий для нескольких объектов, в которых различаются только целевые данные (т. Е. Выполняемое действие остается тем же).

Тем не менее, я также использовал Tag для хранения значения перечисления (хотя следует избегать типов значений, так как это приведет к боксу при назначении значения свойству Tag) или строку, которая затем используется для определения действие, которое нужно выполнить вместо данных, для которых оно выполняется, и в одном конкретном случае я сохранил делегат, чтобы я мог автоматически сгенерировать некоторые кнопки и встроить их обработчики в Tag (информация об обработчике была предоставляется в режиме данных).

Я уверен, что есть много других способов использования Tag и много других способов заменить использование Tag чем-то более строго типизированным, но я так и использовал.

3 голосов
/ 29 июня 2009

Я использую это все время с ListViews и TreeViews. Это облегчает поиск базовых данных намного . На самом деле, я не уверен, как бы вы создали читаемое приложение Winforms без него.

Я также часто использую его при создании ContextMenus во время выполнения. Я вставляю объект в член Tag каждого ToolStripMenuItem, а затем могу указать обработчику щелчка каждого элемента меню на один и тот же метод. Это приводит к гораздо меньшему количеству кода.

Я просто хотел бы, чтобы это не требовало столько кастинга.

3 голосов
/ 29 июня 2009

Это немного клудж. Он часто используется, например, в TreeView, чтобы связать узел с элементом данных.

Но я бы не стал злоупотреблять этим, поскольку он очень публичный и не очень гибкий. Обратите внимание, что вы почти всегда можете использовать словарь и иметь гораздо больше возможностей для управления.

2 голосов
/ 29 июня 2009

Свойство Tag является древним (в терминах языка программирования), удерживаемым для элементов управления. Насколько мне известно, он использовался во всем - от Visual Basic, Delphi и почти до любого другого языка на основе графического интерфейса.

Это просто дополнительное свойство, которое позволяет вам добавлять числовое значение по любой причине, которую вы хотите использовать в элементе управления.

Я видел, что он используется для всего: от счетчика до хранения идентификатора записи, к которой привязан элемент управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...