Отключить определенные узлы дерева управления - PullRequest
0 голосов
/ 09 февраля 2010

Здравствуйте, у меня есть элемент управления treeView с флажками:

флажок УРОВЕНЬ1

  checkbox Child1
  checkbox Child2

флажок УРОВЕНЬ2

  checkbox Child1

Я не позволю проверять и снимать флажки для ребенка 2 уровня 1 и ребенка 1 уровня 2?

это возможно в древовидном элементе управления?

Ответы [ 2 ]

1 голос
/ 09 февраля 2010

Проблема в том, что TreeNode не имеет ни состояния Enabled, ни какого-либо события, которое вы можете задать. Таким образом, чтобы эмулировать состояние Enabled, вы можете использовать свойство Tag и сохранять логическое значение там при создании каждого узла.

Затем вы добавляете событие в TreeView.BeforeCheck и реализуете что-то вроде этого:

void TreeView_BeforeCheck(object sender, TreeViewCancelEventArgs e)
{
    var IsReadOnly = e.Node.Tag as bool?;

    if (IsReadOnly != null)
    {
        e.Cancel = IsReadOnly.Value;
    }
}
0 голосов
/ 09 февраля 2010

Насколько я знаю, это невозможно. Но вы можете подражать себе:

Изменить цвет узла на серый:

treeControl.Nodes[0].ForeColor = Color.Gray;

И поймать событие клика:

private void treeControl_AfterCheck(TreeControl tc,
                                            NodeEventArgs e)
{
  if(e.Node.ForeColor == Color.Gray)
    e.Node.Checked = !e.Node.Checked;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...