Отключение знака плюс / минус на определенных узлах TreeView - PullRequest
1 голос
/ 28 июня 2011

У меня есть элемент управления System.Windows.Forms.TreeView, для которого я хотел бы отключить знак плюс / минус для определенных дочерних объектов TreeNode.Я знаю, что могу сделать это на всем уровне TreeView, используя свойство TreeView.ShowPlusMinus, но мне интересно, могу ли я скрыть знаки только для выбранных объектов TreeNode.

Ответы [ 3 ]

1 голос
/ 29 июня 2011

Увы, класс Windows Forms TreeView охватывает собственный элемент управления древовидной структуры , и этот элемент управления поддерживает только отображение или скрытие знаков плюс / минус в глобальном масштабе.

Это связано с тем, что внутренне этот флаг соответствует стилю элемента управления TVS_HASBUTTONS , который, конечно, влияет на весь элемент управления, а не на отдельные элементы.

Насколько мне известно, единственный способ достичь того, чего вы хотитедолжен обрабатывать событие DrawNode и визуализировать все самостоятельно .

0 голосов
/ 08 февраля 2014

Каждый TreeViewItem (TVITEM) имеет член cChildren. Если 0 знак плюс минус скрыт. если 1, отображается знак +.

См http://msdn.microsoft.com/en-us/library/windows/desktop/bb773456%28v=vs.85%29.aspx

Не забудьте флаг TVIF_CHILDREN.

Я отвечаю, потому что я искал тот же вопрос и не нашел ответа.

0 голосов
/ 29 июня 2011

Основываясь на вышеизложенном редактировании, вы должны переопределить событие TreeView BeforeCollapse, чтобы отменить коллапс, если это неразборный узел:

private void treeView1_BeforeCollapse(object sender, TreeViewCancelEventArgs e) {
  MyParameter myP = e.Node.Tag as MyParameter;
  if (myP != null) {
    if (myP.Type == MyParameterType.NonCollapsible) {
      e.Cancel = true;
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...