none
Использование св-ва Tag RRS feed

  • Вопрос

  • Объясните пожалуйста, назначение и правильное использование свойства Tag которое есть в каждом контроле.

    MSDN пишет: Получает или задает объект, содержащий данные элемента управления.

    Вот я к примеру использую код

    label.Text = label.Text + ((Button)sender).Text;

    А мне говорят, что вместо св-ва Text лучше использовать Tag, т.к. Text - не совсем корректно.

    Т.е. можно переписать код так ?

    label.Tag= label.Tag + ((Button)sender).Tag;

    Объясните пожалуйста.

    2 апреля 2013 г. 6:00

Ответы

  • А мне говорят, что вместо св-ва Text лучше использовать Tag, т.к. Text - не совсем корректно.

    Кто говорит? Это глупость как по мне.

    Tag имеет тип Object и обычно используется как свойство для чего угодно. Трудно объяснить без примера, поэтому пример на скорую руку:

    У вас есть сто сотрудников, вы хотите вывести их всех на форме. В вашей базе данных эти сотрудники имеют номера. Вы в коде создаете 100 Label'ов и в свойство Text пишите их ФИО. Выодите на форму. Потом я нажимаю на любое ФИО и хочу увидеть адрес. Вам придется проходить по базе искать совпадение по ФИО и выводить адрес. А можно в Tag лейбла поместить номер сотрудника в базе и по нажатию смотреть номер из Tag и быстро находить в базе. Надеюсь данный чем то глуповатый пример помог понять зачем нужен Tag


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    2 апреля 2013 г. 6:13
    Отвечающий
  • Свойство это "специальная ячейка" экземпляра класса для хранения произвольных данных. Tag имеет тип Object и значит ему можно присвоить значения любого типа (простого - числа или сложного - массива).

    Label.Tag=0;
    Label.Tag=Label.Tag+12;
    Label.Tag+=110;

    4 апреля 2013 г. 3:54

Все ответы

  • А мне говорят, что вместо св-ва Text лучше использовать Tag, т.к. Text - не совсем корректно.

    Кто говорит? Это глупость как по мне.

    Tag имеет тип Object и обычно используется как свойство для чего угодно. Трудно объяснить без примера, поэтому пример на скорую руку:

    У вас есть сто сотрудников, вы хотите вывести их всех на форме. В вашей базе данных эти сотрудники имеют номера. Вы в коде создаете 100 Label'ов и в свойство Text пишите их ФИО. Выодите на форму. Потом я нажимаю на любое ФИО и хочу увидеть адрес. Вам придется проходить по базе искать совпадение по ФИО и выводить адрес. А можно в Tag лейбла поместить номер сотрудника в базе и по нажатию смотреть номер из Tag и быстро находить в базе. Надеюсь данный чем то глуповатый пример помог понять зачем нужен Tag


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    2 апреля 2013 г. 6:13
    Отвечающий
  • Свойство это "специальная ячейка" экземпляра класса для хранения произвольных данных. Tag имеет тип Object и значит ему можно присвоить значения любого типа (простого - числа или сложного - массива).

    Label.Tag=0;
    Label.Tag=Label.Tag+12;
    Label.Tag+=110;

    4 апреля 2013 г. 3:54
  • Спасибо!

    Т.е. я могу написать:

    Label.Tag=String.Empty; Label.Tag=Label.Tag+"SomeText"; Label.Tag+="SomeText";

    и собственно возвращаясь к вопросу...

    Label.Text = "Some String" or Label.Tag = "Some String"

    Одной из причин, использования Tag вижу, например, если поменяется локализация приложения, то в Label.Text, может оказаться вместо Label.Text = "Some String" -> Label.Text = "Некоторая строка" или Label.Text = "Деяка строка" итд.

    5 апреля 2013 г. 4:54