Не уверен, что у этого есть имя. Это вполне стандартно, поля _callCountUp / Dn избегают проблем, когда изменение свойства Checked узла приводит к повторному запуску обработчика событий AfterCheck. StackOverflow - очень типичный результат, когда обработчик событий возвращается без ограничений.
Общий шаблон похож на это:
private bool modifyingNodes;
private void treeview_AfterCheck(object sender, TreeViewEventArgs e) {
if (modifyingNodes) return;
modifyingNodes = true;
try {
// etc..
}
finally {
modifyingNodes = false;
}
}
Блок finally гарантирует, что обработанное исключение (например, через ThreadExceptionDialog) не всегда оставит для переменной состояния значение true. Это необязательно, конечно.