Как изменить символ в TreeView C#?
Как сделать, чтобы слева от корневого узла вместо "+" стоял треугольник? Понимаю, что встроенными средствами WinForms этого не сделать, а как это реализуется через WinAPI или события отрисовки?
Ответы (2 шт):
Обычно внешний вид TreeView в WinForms отрисовывается операционной системой. Но, если очень нужно, то можно при помощи свойства DrawMode сделать собственную отрисовку.
Для этого нужно установить для свойства DrawMode значение TreeViewDrawMode.OwnerDrawAll или TreeViewDrawMode.OwnerDrawText и написать обработчик для события DrawNode.
Более подробную информацию можно найти в документации.
Документация Microsoft: https://docs.microsoft.com/ru-ru/dotnet/api/system.windows.forms.treeview.drawmode?view=netframework-4.8
Пример на enSO: https://stackoverflow.com/questions/20125131/treeview-change-plus-minus-icon
Проблема уже решена, всем спасибо.
[DllImport("uxtheme.dll", ExactSpelling = true, CharSet = CharSet.Unicode)]
private static extern int SetWindowTheme(IntPtr hwnd, string pszSubAppName, string pszSubIdList);
...
SetWindowTheme(treeView1.Handle, "explorer", null);