Я занимаюсь узлами, дочерними узлами, дочерними дочерними узлами в списке TreeView; не говоря уже о флажках. Моя цель - выбрать/проверить несколько узлов, и каждый узел, связанный с эксклюзивным кодом, будет выполняться одним щелчком кнопки. Я подумал об использовании инструкции foreach с помощью оператора switch и if. Предварител, чтобы пройти через узлы дерева, , если, чтобы проверить, проверен ли узел, и коммутатор для просмотра значений, соответствующих проверяемому узлу. Это моя идея, но я чувствую, что для нее лучше. Может ли кто-нибудь проверить программу ниже или предоставить более легкую, более чистую версию?Использование инструкции foreach и переключатель для проверенных нескольких узлов
Моя идея: сделать это следующим образом:
foreach (TreeNode rootNodes in treeView1.Nodes)
{
foreach (TreeNode childNodes in rootNodes.Nodes)
{
if (childNodes.Checked == true)
{
switch (childNodes.Name.ToString())
{
case "Trial A":
//execute code for Trial A
MessageBox.Show("A"); //trial
break;
case "Trial B":
//execute code for Trial B
MessageBox.Show("B"); //trial
break;
case "Trial C":
//execute code for Trial C
MessageBox.Show("C"); //trial
break;
default:
MessageBox.Show("error");
break;
}
}
}
}
До сих пор, когда я попытался это, он работал. Когда я выбрал несколько узлов, каждый код узла работал по одному. На самом деле я очень обрадовался. Проблема кроется во мне, есть это ворчащее чувство, что эта программа может быть потенциально неправильной или я могу столкнуться с проблемами в будущем.
Я использую VS 2005, .NET 2.0, работающий на WinForms. Sidenote: Я проанализировал XML-файл в список древовидной структуры. Узлы соответствуют объектам в XML-файле.
Еще одно сообщение: Я все еще учусь. Я новичок. Определенно, новичок C#. Что касается других опытов программирования, я знаю немного C и C++ (но только основы, только для некоторых упражнений и проектов в школе).
этот код даже работает? я не уверен, что он компилируется?! 'foreach (childNodes.Checked in rootNodes)' !! – chouaib
Две вещи, которые, вероятно, придираются к кости вашего программиста: a) что вы не можете быть уверены в глубине, на которую может расти дерево, и б), что структура корпуса не дает возможности добавить реальный код. Для a) вам нужна рекурсия, как в ответе Нила, для b) вы можете использовать делегатов и, возможно, создать словарь .. –
TaW
@chouaib, я его отредактировал сейчас. Я не понимал, что здесь я вставил другой код (очевидно, неверный), я экспериментировал. Теперь я изменил его на рабочий. Я думаю. – Kurisuchin