У меня есть древовидный элемент управления с динамически создаваемыми узлами / дочерними узлами. Когда пользователь щелкает по конкретному узлу, отображение таблицы должно обновляться некоторой соответствующей информацией / настройками узла. Чтобы отслеживать, какой узел щелкают, я добавил настраиваемый тег (класс под названием «NodeTag», содержащий два поля) к узлу после того, как он был создан во время выполнения. Я подписался на событие 'AfterSelect' элемента управления treeview и хотел бы проверить SelectedNode.Tag, но, как ни странно, у меня всегда был последний объект тега для всех выбранных объектов: все узлы имеют NodeTag.Nodename = "GLBS" "и NodeTag.NodeNumber = 0. Вот рис, где выбран« Текущий сеанс », выбранный текст узла правильный, а тег - нет.
Вот код:
TreeNode SessionNode = new TreeNode("Current Session");
//Add Tag object to the new node
NodeTag nt = new NodeTag();
nt.NodeName = "SESS";
nt.NodeNumber = 0;
SessionNode.Tag = (object) nt;
tv_project.Nodes.Add(SessionNode);
MainProject.ProjectNode = new TreeNode("Project - " + e.ProjName + " - " + e.ProjOwner);
//Add Tag object to the new node
nt.NodeName = "PROJ";
nt.NodeNumber = 0;
MainProject.ProjectNode.Tag = (object) nt;
SessionNode.Nodes.Add(MainProject.ProjectNode);
TreeNode SettingsNode = new TreeNode("Global Settings");
//Add Tag object to the new node
nt.NodeName = "GLBS";
nt.NodeNumber = 0;
SettingsNode.Tag = (object) nt;
SettingsNode.ForeColor = Color.Red;
MainProject.ProjectNode.Nodes.Add(SettingsNode);