隨着我的程序的增長和發展,我一直在發現我越來越多地使用Control.Tag
。我不太確定微軟爲什麼把它放在那裏,但我覺得它非常有用。.Net Control.Tag - 常見和不常見的用途
我還在想:他們最初的目的是什麼?什麼被認爲是可以接受的,什麼被認爲是禁忌?
根據MSDN的說明,Control.Tag
「獲取或設置包含有關控件的數據的對象。」
在我的日曆應用程序中,我存儲了一個AppointmentControl
表示的實際Appointment
對象。我懷疑這是它的預期用途,MSDN上的例子似乎證實了這一點,但是我也做了一些不尋常的事情。
例如,當我有一個後退/下一個按鈕對,當我們到達開始位置時我想要禁用,而當我們到達結束位置時禁用下一個按鈕,然後將下一個按鈕存儲在標記中的前一個按鈕,以及下一個標籤中的上一個按鈕。這樣,我總是可以點擊設置((Button)Tag).Enabled = true
(因爲當您移回去時,顯然禁用的下一個按鈕將變爲啓用狀態,反之亦然)。另外,我的日曆由(視覺)二維面板數組組成。我存儲DateTime
,其中每個面板對應於Panel.Tag
,並且當用戶放大以查看一天中的時隙時,組成每個時隙的面板在它們的標籤中具有時間跨度,其代表時隙的開始時間。
所以我很好奇:你認爲什麼是最常見的標籤使用?什麼是您使用過或見過的標籤更爲不尋常的應用?你會考慮存儲一個鏈接的對象(如我的後/下一個按鈕示例)是「哈克」嗎?
有人反對使用標籤,表明他們是舊語言的殘餘。一個常見的抱怨是,最好簡單地擴展一個控件,使其包含一個強類型的對象,而不是任何需要在使用時進行轉換的東西。你怎麼看待這件事?