У меня есть класс System.Windows.Form (мой основной класс). Есть объект RootMenu. Это мой собственный объект. Я пытаюсь перебрать объект RootMenu и на каждом проходе добавлять ToolStripMenuItem в ContextMenuStrip (который я назвал ContextMenu). Объект RootMenu содержит список. Ссылки имеют Имена и URL (обе строки).
Когда форма загружает мой класс "Factory", я загружаю объект RootMenu, который я затем передаю в метод ProcessMenu.
Выдержка из кода здесь:
private void ProcessMenu(RootMenu rm)
{
foreach (var lnk in rm.Links)
{
var tsmi = new ToolStripMenuItem(lnk.Name, null, new EventHandler(Navigate));
tsmi.ToolTipText = lnk.Url;
ContextMenu.Items.Add(tsmi);
}
}
private void Navigate(object sender, EventArgs e)
{
var tsmi = (ToolStripMenuItem) sender;
System.Diagnostics.Process.Start(tsmi.ToolTipText);
}
Вы видите, как я должен хранить lnk.Url в ToolTipText? В дни VB6 все элементы управления имели свойство «tag». Раньше у вас была возможность добавлять дополнительные элементы управления, которые вам понадобятся позже. Я не хочу использовать всплывающую подсказку для этого, но каковы мои альтернативы? Хранить все URL в хэше / словаре, используя имя в качестве ключа? У меня не всегда могут быть уникальные имена, поэтому я бы хотел избежать этого маршрута. Как правильно обращаться с этим в .NET? Может быть, мне не хватает какой-то базовой концепции, с которой я никогда не сталкивался.