Как уже упоминалось в других ответах, можно использовать свойство Tag
для хранения любой дополнительной информации об элементе управления, включая отображаемое имя.
Но вы когда-нибудь замечали, как ToolTip
позволяет вам установить ToolTip
для вашего управления во время разработки?
A ToolTip
, ErrorProvider
или HelpProvider
являются примерами компонентов поставщика расширений. Они добавляют некоторые свойства к элементам управления во время разработки. Вы также можете создать такой компонент для DisplayName
, реализовав IExtenderProvider
.
Пример
Следующий код показывает, как легко вы можете создать компонент с именем DisplayNameExtender
. Когда вы удаляете экземпляр этого компонента на форме, тогда новое свойство будет добавлено во время разработки элементов управления, вы можете установить значение для свойства
во время разработки: DisplayName для diaplayNameExtender1 .
Затем во время выполнения, когда вы хотите получить значение DisplayName
для элемента управления, достаточно найти его следующим образом:
var displayName = displayNameExtender1.GetDisplayName(control);
Вот код для DisplayNameExtender
компонента:
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
[ProvideProperty("DisplayName", typeof(Control))]
public class DisplayNameExtender : Component, IExtenderProvider
{
private Hashtable displayNameValues = new Hashtable();
public bool CanExtend(object extendee)
{
return (extendee is Control && !(extendee is Form));
}
public string GetDisplayName(Control control)
{
if (displayNameValues.ContainsKey(control))
return (string)displayNameValues[control];
return null;
}
public void SetDisplayName(Control control, string value)
{
if (string.IsNullOrEmpty(value))
displayNameValues.Remove(control);
else
displayNameValues[control] = value;
}
}