2011-06-28 2 views
1

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

+0

Вы имеете в виду ** без ** удаления узлов? – jp2code

+0

@ jp2code: Узлы загружаются динамически, считывая данные с веб-службы. Прежде чем каждый узел будет загружен в дерево, я хочу проверить, должен ли он быть не сбрасываемым узлом, и в этом случае я хотел бы отключить знак плюса/минуса (отдельно я бы также поместил узел в расширенный режим и отключил нормальный дважды щелкните развернуть/свернуть поведение). После того, как узел добавлен в дерево, мне больше не нужно настраивать плюс/минус. – Abiel

ответ

1

Увы, Windows Forms TreeView класса оборачивает родную tree view control, и этот элемент управления поддерживает только отображение или скрытие знаков «плюс/минус» по всему миру.

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

Насколько я знаю, единственный способ добиться того, что вы хотите, - это обработать событие DrawNode и render everything yourself.

0

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

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; 
    } 
    } 
} 
+0

Извините, я понял, что мой комментарий, возможно, был немного заблуждением. Вместо того, чтобы говорить «отключить» знак плюса/минуса, я должен был сказать «скрыть». В основном я хочу отключить поведение expand/collapse и скрыть знак плюса/минуса, чтобы пользователю было ясно, что узел не может быть свернут. Главное, что я не знаю, как это сделать, - это скрыть знак плюса/минуса. – Abiel

+0

Я не думаю, что это возможно со встроенным управлением. Если вы хотите перейти * с оси *, вам придется ** перевернуть свой собственный **. – jp2code

Смежные вопросы