3 Ответов

Рейтинг:
2

BillWoodruff

Как вы уже выяснили, нет прямого способа отображения текста с несколькими строками в качестве содержимого TreeView TreeNode WinForms.

Теоретически вы могли бы сделать это с помощью пользовательского владельца-рисования узла и его текста, и Microsoft предоставила пример этого (но пример не демонстрирует несколько строк текста) начиная с FrameWork 2.0: [^].

Я бы посоветовал вам не тратить время на попытки создания пользовательских узлов, нарисованных владельцем, если только вы не являетесь опытным разработчиком, и у вас есть много времени, чтобы тратить его на небольшую отдачу.

Итак, каковы же альтернативы ?

1. Установите свойство 'Scrollable TreeView в значение 'true и позвольте конечному пользователю прокручивать, чтобы увидеть расширенное текстовое содержимое в TreeNode.

2. установите 'Scrollable в 'false и 'ShowNodeToolTips в 'true, а также назначьте строки с символами разрыва строки свойству ToolTip всех или некоторых TreeNodes. Или вы можете написать некоторый код, который при запуске приложения рекурсивно прошел через все TreeNodes и создал пользовательские всплывающие подсказки только для тех TreeNodes, которые, как вы каким-то образом выяснили, имели расширенный текст длины. Проблема в том, что нет никакого способа точно определить, сколько текущего текста находится в узле нет видимый, учитывая ширину TreeView.

Наконец, я бы предложил вам изучить различные элементы управления TreeView и TreeListView, которые были опубликованы здесь на CP на протяжении многих лет, начиная с классического ObjectListView Филипа Пайпера, который развивался в течение многих лет и который все еще активно поддерживается (по состоянию на май 2014 года): [^].

Я верю, но не уверен, что ObjectListView поддерживает многострочное текстовое содержимое в узлах.


Master@Infinity

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

Master@Infinity

и кстати, что такое "ObjectListView"? не могли бы вы привести мне какой-нибудь пример статьи или кодекса?

Рейтинг:
1

Shubham Choudhary

Привет, я даю вам метод только для того, чтобы знать, как это сделать, хорошо, это единственный пример, который я еще не тестирую, этот код работает или нет......


частный недействительными методе form1_load(объект отправителя, EventArgs в электронной)
{
//
// Это первый узел в представлении.
//
Узлов дерева узлов дерева = новый объект treenode("БМВ");
элемента управления treeview1.Узлы.Добавить(treeNode);
//
// Еще один узел, следующий за первым узлом.
//
treeNode = новый TreeNode("Марути");
элемента управления treeview1.Узлы.Добавить(treeNode);
//
// Создайте два дочерних узла и поместите их в массив.
// ... Добавьте третий узел и укажите их в качестве дочерних узлов.
//
TreeNode node2 = новый TreeNode("Болоро");
Узлов дерева Узел3 = новый объект treenode("Ксило");
TreeNode[] array = new TreeNode[] { node2, node3 };
//
// Конечный узел.
//
treeNode = новый TreeNode("Mahindra", массив);
элемента управления treeview1.Узлы.Добавить(treeNode);
}


Master@Infinity

сэр, на самом деле я не понимаю, что вы просто добавляете "узлы к дереву". Мне нужны новые строки в одном и том же узле, а не в другом узле. Пожалуйста, посмотрите изображение еще раз, сэр.

Рейтинг:
0

eldhosepk

Попробовать это
Узлов дерева tnode_child_item = новый объект treenode();

tnode_child_item.Text = "<span> <div > first line<br/> <span>second line</span>  </div></span>";


выход будет выглядеть так
+ первая строка
вторая строка


Richard Deeming

Вопрос заключается в том, что Windows Forms TreeView. Ваше решение, по-видимому, предназначено для веб-форма TreeView, что является совершенно другим контролем.