Я на своем горьком опыте обнаружил, что использование свойства Tag
создает хрупкие решения. Безопасный для типов способ сопоставления TreeNode
с XmlElement
с заключается в создании Dictionary<TreeNode, XmlElement>
. Сначала это сложнее, чем использование свойства Tag
, но это делает связь чрезвычайно явной. (Я только вчера исправил ошибку, связанную с тем, что один фрагмент кода сохраняет ключи к объектам в свойстве Tag
, в то время как другой ожидал, что Tag
будет содержать сами объекты.)
Таким образом, код в событии AfterSelect будет выглядеть примерно так:
TreeNode n = sender as TreeNode;
if (n != null)
{
string[] result = TreeNodeMap[n].Attributes
.Select(x => x.Name + "=" + x.Value)
.ToArray();
}