Мой проект - WinForms, C #.
У меня есть форма с TreeView с CheckBoxes, установленным в true.Есть несколько корневых узлов, каждый из которых имеет несколько дочерних узлов.
Я бы хотел, чтобы все дочерние узлы имели то же состояние «отмечено / выключено», что и их родительский узел.Я написал следующий обработчик событий:
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e)
{
// return in case the event is induced by the code below
if (e.Action == TreeViewAction.Unknown)
{
return;
}
System.Diagnostics.Debug.WriteLine(string.Format("Checked - {0}", e.Node.Checked));
foreach (TreeNode subNode in e.Node.Nodes)
{
subNode.Checked = e.Node.Checked;
}
}
Тем не менее, это довольно странно работает при быстром нажатии на родителя.Я легко могу воспроизвести это, быстро проверив и сняв флажок родителя, так что все подузлы проверяются, а родительский уже не проверен.
Как сделать это более правильно?