2009-06-29 11 views
9

Zacząłem używać tego pakietu do łączenia elementów mojego interfejsu z ich klasą zabezpieczenia danych (cokolwiek to może być). Jakie są niektóre z typowych zastosowań, do których można użyć właściwości Tag?Typowe zastosowania dla właściwości Tag

Rzeczywiście, w ogóle go używasz? Wiem, że nie robiłem tego przez bardzo długi czas.

Odpowiedz

10

Tak jak opisujesz, najczęstszym użyciem właściwości Tag, z którą się zetknąłem i używam w obu WinFormach, WPF i Silverlight jest wskazanie prawdziwych danych, do których odnosi się kontrola. Jest to szczególnie użyteczne w przypadku instancji ListViewItem lub automatycznie generowanego interfejsu użytkownika, w którym ma być używana ta sama procedura obsługi zdarzeń dla wielu obiektów, w których tylko dane docelowe są różne (tzn. Akcja do wykonania pozostaje taka sama).

Jednak użyłem także Tag do przechowywania wartości wyliczeniowej (należy jednak unikać typów wartości, które powodowałyby boksowanie podczas przypisywania wartości do właściwości Tag) lub ciągu, który jest następnie używany do określenia działania, które należy wykonać zamiast danych, na których to wykonać, i w jednym szczególnym użyciu, zapisałem delegata, aby automatycznie wygenerować niektóre przyciski i osadzić ich obsługi w Tag (informacje obsługi były dostarczane w danych napędzane sposób).

Jestem pewna, że ​​istnieje wiele innych sposobów użycia Tag i wielu innych sposobów zastąpienia zastosowań Tag czymś mocniej napisanym, ale w ten sposób go użyłem.

+0

Delegat? Przypuszczam, że powinien, ale nigdy nie zdarzyło mi się, że delegaci też są obiektami. –

+0

Używanie teraz znaczników ListViewItem: W hierarchii folderów/plików używam znacznika do przechowywania pełnej ścieżki do pliku, podczas gdy nagłówek wyświetla tylko nazwę. –

2

Właściwość Tag jest starożytna (w języku programowania), w której występują elementy sterujące. Zgodnie z moją wiedzą, był on używany we wszystkim, począwszy od visual basic, delphi i prawie każdego innego języka opartego na gui.

Jest to po prostu dodatkowa właściwość, która umożliwia dodanie wartości liczbowej z dowolnego powodu, który ma być kontrolowany.

Widziałem go używany do wszystkiego od licznika do posiadania rekordu id, do którego kontrola jest przywiązana.

+0

Unikałbym przechowywania typów wartości w nim, ponieważ pole to wartość. –

+0

W języku C# nie jest to wartość numeryczna, ale obiekt. Zamiast posiadania identyfikatora rekordu, możesz mieć referencję do faktycznego rekordu. –

3

To trochę kludge. Jest często używany na przykład w TreeView do łączenia węzła z elementem danych.

Ale nie nadużywałbym tego, ponieważ jest bardzo publiczny i niezbyt elastyczny. Zauważ, że prawie zawsze możesz użyć Słownika < Sterowanie, ValueType> zamiast tego i mieć o wiele więcej kontroli w ten sposób.

3

Używam go cały czas z ListViews i TreeViews. Dzięki temu łatwiej jest znaleźć podstawowe dane. Tak naprawdę, nie jestem pewien, jak bez niej można stworzyć czytelną aplikację WinForm.

Używam go również dużo podczas tworzenia ContextMenus w czasie wykonywania. Wstawiam obiekt do elementu Tag każdego ToolStripMenuItem, a następnie mogę wskazać obsługę kliknięcia każdego elementu menu w tej samej metodzie. Powoduje to znacznie mniej kodu.

Po prostu żałuję, że nie wymaga tak dużego rzucenia.

Powiązane problemy