Ваше требование является неполным, оно не говорит о том, что должно произойти, если проверено некоторых узлов Anyhoo, этот вид кода легко начать с событием AfterCheck. Например:
private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) {
if (e.Node.Parent != null) {
bool on = true;
bool off = true;
foreach (TreeNode node in e.Node.Parent.Nodes) {
if (node.Checked) off = false;
else on = false;
}
if (off) e.Node.Parent.Checked = false;
if (on) e.Node.Parent.Checked = true;
}
}