У меня есть вопрос относительно TreeViews и их узлов в C#.
Чем я сейчас и пытаюсь заниматься. У меня есть TreeView и рядом с ним TableLayoutPanel. Когда я нажимаю узлы, я хочу вызвать определенный метод и отобразить данные в TableLayoutPanel. Отображение данных работает нормально, но моя проблема в том, что я точно не знаю, как определить, какой Node/ChildNode был выбран.
У меня есть TreeView, который выглядит так
Root1
R1Child1
R1Child2
Root2
R2Child1
R2Child2
Root3
R3Child1
R3Child2
В настоящее время я обрабатываю это с помощью метода AfterSelect и просто проверяю выбранный узел на наличие текста.
private void treeHardware_AfterSelect(object sender, TreeViewEventArgs e)
{
if (e.Node.Text == SysInfo.CPU.Name)
{
deleteRows();
initFixedRows();
updateTableCPU();
}
else if (e.Node.Text == ramNameIdent)
{
deleteRows();
initFixedRows();
updateTableRAM(e.Node.Index);
}
else if (e.Node.Text == "Memory")
{
deleteRows();
initFixedRows();
loadRAMDetails(0);
loadRAMOverview();
}
else if( e.Node.Text == "Mainboard")
{
deleteRows();
initFixedRows();
updateTableMainboard();
}
else
{
Console.WriteLine("ERROR");
}
}
По моему мнению, это очень непрактичный способ проверить, какой узел был нажат, потому что он просто проверяет строки, и это не очень эффективно.
Следующая проблема для узла памяти. Я показываю все установленные физические воспоминания и добавляю каждое из них в качестве дочернего узла. Теперь, когда я нажимаю на один из них, он должен отображать данные выбранной памяти в моей панели TableLayoutPanel. Но он всегда просто показывает «последний».
Надеюсь, вы понимаете, что я имею в виду... Если нет, просто запросите дополнительную информацию :-)
Привет, Консти