Гость
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Никто не знает примера как в .Net на чистом API Treeview сделать? / 20 сообщений из 20, страница 1 из 1
21.07.2016, 09:53
    #39277541
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Чет не могу в гугле найти ничего потребного.
Treeview то создал, а с TVITEM, TVINSERTSTRUCT, TVM_INSERTITEM пока плаваю,
TVM_INSERTITEM возвращает нуль, ни одного итема пока добавить не сумел.
(на VB6 тоже этого никогда не делал)

Я понимаю что жесть,
но у меня не получается применить TVS_EX_RICHTOOLTIP стиль к .Net-Treeview, а очень хочется .

Код: vbnet
1.
2.
3.
    Dim tExStyle As Integer = SendMessage(TreeView1.Handle, TVM_GETEXTENDEDSTYLE, 0, 0)
    tExStyle = tExStyle Or TVS_EX_RICHTOOLTIP
    Call SendMessage(TreeView1.Handle, TVM_SETEXTENDEDSTYLE, 0, tExStyle)


Смысл этого стиля: тултип содержит картинку итема, при этом четко накладывается на итем (на текст с картинкой).
Можно посмотреть в дереве проводника Windows как это выглядит (на 10-ке, 8-ке, 7-ке), выглядит неплохо.

Я все перепробовал, если делать это в VB6 - получается, если делать это с "чужим" TreeView из .Net -получается.
С .Net treeview -никак.
Коды .Net treeview пытался смотреть, походу там свой сабклассинг, ловится TTN_SHOW и стандартное поведение переопределено.
Даже простые текстовые тултипы не накладываются четко на текст, а смещены чуть влево-вверх налезая на картинку, похоже hard-coded.
И через эту дрянь не перепрыгнуть, т.е. свой класс Inhereted Treeview то создать можно, но либо отменять MyBase.WndProc (тогда ничего не работает), либо не отменять, но он же тогда выкидывает в WndProc Net-Treeview , перескочить через которую нельзя - со всеми вытекающими.
...
Рейтинг: 0 / 0
21.07.2016, 10:00
    #39277551
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77,
Забил бы ты уже на win api и смотрел в сторону wpf.
...
Рейтинг: 0 / 0
21.07.2016, 10:26
    #39277578
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
ЕвгенийВ,

не мешайте кактус кушать
...
Рейтинг: 0 / 0
21.07.2016, 10:33
    #39277590
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Не надо давать ответов не по теме вопроса.
Мне нужен пример (в смысле кусок кода который бы работал) создания API-Treeview в .Net
Конкретно интересует добавление итемов (можно без картинок), чтоб работал.
Дальше я разберусь.
По словам pinvoke .Net C# TVITEM TVINSERTSTRUCT TVM_INSERTITEM
я ничего потребного не нашел.
(CreateWindowEx понятно сделал)
...
Рейтинг: 0 / 0
21.07.2016, 11:13
    #39277625
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77, Using Tree-View Controls не помогло? Там и примеры на плюсах есть...
...
Рейтинг: 0 / 0
21.07.2016, 11:22
    #39277642
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77Не надо давать ответов не по теме вопроса.
Мне нужен пример (в смысле кусок кода который бы работал) создания API-Treeview в .Net
Конкретно интересует добавление итемов (можно без картинок), чтоб работал.
Дальше я разберусь.
По словам pinvoke .Net C# TVITEM TVINSERTSTRUCT TVM_INSERTITEM
я ничего потребного не нашел.
(CreateWindowEx понятно сделал)
Выкладывай код, которым все это пытаешься делать.

<ванга mode on>
скорее всего определения структур не правильные
<ванга mode off>
...
Рейтинг: 0 / 0
21.07.2016, 11:38
    #39277657
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
buser,

Да именно по этому учебнику и делал

С вот этим
How to Add Tree-View Items
вконец запутался

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
  Public Const TV_FIRST = &H1100
  Public Const TVM_INSERTITEMW = (TV_FIRST + 50)
  Public Const TVM_INSERTITEM = TVM_INSERTITEMW


  <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
  Public Structure TVITEM
    Dim mask As UInteger
    Dim hItem As IntPtr
    Dim state As UInteger
    Dim stateMask As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=MAX_PATH)> Dim pszText As String
    Dim cchTextMax As Integer
    Dim iImage As Integer
    Dim iSelectedImage As Integer
    Dim cChildren As Integer
    Dim lParam As IntPtr
  End Structure

  <StructLayout(LayoutKind.Sequential)>
  Public Structure TVINSERTSTRUCT
    Dim hParent As IntPtr
    Dim hInsertAfter As IntPtr
    Dim item As TVITEM
  End Structure

  Public Const TVI_FIRST = &HFFFF0001
  Public Const TVI_ROOT = &HFFFF0000

  ' TVITEM mask flags.
  Public Const TVIF_TEXT = &H1
  Public Const TVIF_IMAGE = &H2
  Public Const TVIF_PARAM = &H4
  Public Const TVIF_STATE = &H8
  Public Const TVIF_SELECTEDIMAGE = &H20
  Public Const TVIF_CHILDREN = &H40

  Public Declare Unicode Function SendMessage_TVINSERTSTRUCT Lib "user32" Alias "SendMessageW" _
   (ByVal hwnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByRef lParam As TVINSERTSTRUCT) As IntPtr

  Public Function TreeView_AddItem(ByVal hwndTV As IntPtr, ByVal hParent As IntPtr, ByVal hInsertAfter As IntPtr, _
   ByVal key As String, ByVal text As String, ByVal image As Integer, ByVal selectedImage As Integer) As Integer
    Dim tvi As New TVITEM
    With tvi
      .mask = TVIF_TEXT Or TVIF_IMAGE Or TVIF_SELECTEDIMAGE
      .pszText = text
      .cchTextMax = Strings.Len(text) 'MAX_PATH
      .iImage = image
      .iSelectedImage = selectedImage
    End With
    Dim tvins As New TVINSERTSTRUCT
    With tvins
      .hParent = hParent
      .hInsertAfter = hInsertAfter
      .item = tvi
    End With
    Dim hprev As IntPtr = SendMessage_TVINSERTSTRUCT(hwndTV, TVM_INSERTITEM, 0, tvins)
    MsgBox(hprev.ToString)
    Return hprev
  End Function

    TreeView_AddItem(hwndTV, IntPtr.Zero, IntPtr.Zero, "Test Item", "Test Item", 0, 0)



TVM_INSERTITEM возвращает нуль и ничего не добавляет

Пробовал в hInsertAfter засовывать TVI_FIRST или TVI_ROOT вместо нуля, не помогает.
И вот где я напортачил ХЗ, есть идеи?
Т.е. задача добавить хоть один какой-нибудь итем для начала, пусть без текста, без картинки.
Не добавляется зараза.
Был бы пример, от него бы сплясал как нибудь.
...
Рейтинг: 0 / 0
21.07.2016, 11:56
    #39277676
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Antonariy,

привет, выложил только что.

Проблема у меня на самом деле только с категорическим нежеланием .Net контрола принимать на вход TVS_EX_RICHTOOLTIP который мне очень хочется, см. первый пост.
Причем категорически не применяется именно к .Net контролу (и лезть в Override WinProc безполезно, потому что у него своя которую не обойти).
Если например применить этот стиль к Treeview из htmlhelp (если помнишь мои картинки), то без проблем.
И в VB6 с его контролом тоже без проблем.

Просто счас сделал высокие Treeview (24px как в Win10) + Or TVS_FULLROWSELECT Or TVS_TRACKSELECT
+SetWindowTheme(TreeView1.Handle, "explorer", vbNullString)
И оно как бы симпатично весьма,
но стандартные тултипы обычной высоты, да еще съехавшие вверх-влево на пару пикселей от ориг. текста (спасибо .нету) смотрятся не ахти.
Забил бы, но ты ж меня знаешь.
...
Рейтинг: 0 / 0
21.07.2016, 15:03
    #39277940
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77Antonariy,

привет, выложил только что.я имел ввиду тестовый проект. где CreateWindowEx уже работает.
...
Рейтинг: 0 / 0
21.07.2016, 15:09
    #39277949
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
А в VB6 все получилось.
Даже тупо с pszText As String в TVITEM и без задания cchTextMax.
Итем в стиле 90-х так сказать нарисовался и текст отобразил (как и ожидалось).
Пойду что ли "с маршалами, пэтээрами и юникодами" повоюю.
Давно не разминался наверное.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, _
 ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const TV_FIRST = &H1100
Public Const TVM_INSERTITEMA = (TV_FIRST + 0)
Public Const TVM_INSERTITEM = TVM_INSERTITEMA

' TVITEM mask flags.
Public Const TVIF_TEXT = &H1
Public Const TVIF_IMAGE = &H2
Public Const TVIF_STATE = &H8
Public Const TVIF_SELECTEDIMAGE = &H20
Public Const TVIF_CHILDREN = &H40

Public Type TVITEM
  mask As Long
  hItem As Long
  state As Long
  stateMask As Long
  pszText As String 'Long    ' if a string, must be pre-allocated when struct is filled!
  cchTextMax As Long
  iImage As Long
  iSelectedImage As Long
  cChildren As Long
  lParam As Long
End Type

Public Type TVINSERTSTRUCT
    hParent As Long
    hInsertAfter As Long
    Item As TVITEM
End Type

  Public Function TreeView_AddItem(ByVal hwndTV As Long, ByVal hParent As Long, ByVal hInsertAfter As Long, _
   ByVal key As String, ByVal text As String, ByVal image As Long, ByVal selectedImage As Long) As Long
    Dim tvi As TVITEM
    With tvi
      .mask = TVIF_TEXT Or TVIF_IMAGE Or TVIF_SELECTEDIMAGE
'      .pszText = StrPtr(String$(MAX_PATH, 0))
'      Call lstrcpyA(ByVal .pszText, ByVal text)
      .pszText = text
      '.cchTextMax =  ' MAX_PATH
      .iImage = image
      .iSelectedImage = selectedImage
    End With
    Dim tvins As TVINSERTSTRUCT
    With tvins
      .hParent = hParent
      .hInsertAfter = hInsertAfter
      .Item = tvi
    End With
    Dim hprev As Long
    hprev = SendMessage(hwndTV, TVM_INSERTITEM, 0, tvins)
    MsgBox (hprev)
    TreeView_AddItem = hprev
  End Function


Dim hwndTV As Long

Private Sub Form_Load()
    hwndTV = CreateATreeView(Me.Picture1.hwnd)
     TreeView_AddItem hwndTV, 0, 0, "Мой текст As string без юникода", "Мой текст As string без юникода", 0, 0
End Sub
...
Рейтинг: 0 / 0
21.07.2016, 15:41
    #39278009
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Antonariy,

Короче я лоханулся. У меня было так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  Dim hwndTV As IntPtr

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
   CreateATreeView(Me.Panel1.Handle)
    InitTreeView()
  End Sub

  Private Sub InitTreeView()
...
    'привязываем ImageList к Treeview1
    Call TreeView_SetImageList(hwndTV, m_hImlTV, TVSIL_NORMAL)
    TreeView_AddItem(hwndTV, IntPtr.Zero, IntPtr.Zero, "Test Item", "Test Item", 0, 0)
  End Sub



Вместо
Код: vbnet
1.
hwndTV = CreateATreeView(Me.Panel1.Handle)



Я забыл присвоить результат CreateATreeView в переменную hwndTV


AntonariyДмитрий77Antonariy,

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

Смысла выкладывать так понимаю нет.
Ничего кроме MSDN-рутины (которой надеюсь будет не очень много) на этом пути вряд ли ожидается.


Могу другой проект выложить: с .Net-treeview подогнанным под стиль проводника(как на картинке выше),
но при этом с нерешенным вопросом про тултипы как я хочу.
Вот мне кажется, что именно с .Net контролом вопрос не решается никак.
Или каких приемов не знаю.
Может глянешь?

Мне честно не очень хочется API Treeview делать, я и в VB6 их никогда не делал. Хотя они у меня статические и не шибко здоровые. 10-20 итемов на API можно просто запомнить в переменных и не извращаться реализацией key/name.
...
Рейтинг: 0 / 0
21.07.2016, 16:37
    #39278072
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77
Могу другой проект выложить: с .Net-treeview подогнанным под стиль проводника(как на картинке выше),
но при этом с нерешенным вопросом про тултипы как я хочу.
Вот мне кажется, что именно с .Net контролом вопрос не решается никак.
Или каких приемов не знаю.
Может глянешь?ты уже далеко по этому пути ушел, вряд ли я что-то новое обнаружу.

могу предложить отключить тривьюшный тултип и прикрутить винформовский.
...
Рейтинг: 0 / 0
21.07.2016, 17:40
    #39278126
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Antonariyмогу предложить отключить тривьюшный тултип и прикрутить винформовский.
Ну а толку.
свойство ShowNodeToolTips - это Or TVS_INFOTIP -это нафиг не надо, об этом речи не идет.


Отключить стандартный тултип TTN_SHOW(расширением к которому является TVS_EX_RICHTOOLTIP) можно:
Or TVS_NOTOOLTIPS, но тогда ничего и не будет.

А ситуация такая (может чего не понимаю, поэтому проу глянуть):
Стандартный Treeview генерирует WM_NOTIFY+TTN_SHOW
Смотрим сюда:
http://referencesource.microsoft.com/#System.Windows.Forms/winforms/Managed/System/WinForms/TreeView.cs
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
protected override void WndProc(ref Message m) {
...
						case NativeMethods.TTN_SHOW:
                            if (WmShowToolTip(ref m))
                            {
                                m.Result = (IntPtr)1;
                                return;  
                            }
                            else
                            {
                                base.WndProc(ref m);
                                break;
                            }



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
private unsafe bool WmShowToolTip(ref Message m)
        {
            NativeMethods.NMHDR* nmhdr = (NativeMethods.NMHDR*)m.LParam;
            IntPtr tooltipHandle = nmhdr->hwndFrom;
            
                
            NativeMethods.TV_HITTESTINFO tvhip = new NativeMethods.TV_HITTESTINFO();
            Point pos = Cursor.Position;
            pos = PointToClientInternal(pos);
            tvhip.pt_x = pos.X;
            tvhip.pt_y = pos.Y;
            IntPtr hnode = UnsafeNativeMethods.SendMessage(new HandleRef(this, Handle), NativeMethods.TVM_HITTEST, 0, tvhip);
 
            if (hnode != IntPtr.Zero && ((tvhip.flags & NativeMethods.TVHT_ONITEM) != 0)) {
 
                TreeNode tn = NodeFromHandle(hnode);
                if (tn != null) 
                {
                    if (!ShowNodeToolTips) // default ToolTips
                    {
                        Rectangle bounds = tn.Bounds;
                        bounds.Location = this.PointToScreen(bounds.Location);
 
                        UnsafeNativeMethods.SendMessage(new HandleRef(this, tooltipHandle), NativeMethods.TTM_ADJUSTRECT, 1, ref bounds);
                        SafeNativeMethods.SetWindowPos(new HandleRef(this, tooltipHandle),
                                NativeMethods.HWND_TOPMOST, bounds.Left, bounds.Top, 0, 0, NativeMethods.SWP_NOACTIVATE | NativeMethods.SWP_NOSIZE | NativeMethods.SWP_NOZORDER);
                        return true;
                    }
                }
            }
            return false;
        }



И если я правильно понимаю(?), вместо того чтобы отдать TTN_SHOW в дефолтную обработку API контрола,
Net сам "разбирается с тултипом" (и естественно стиль TVS_EX_RICHTOOLTIP идет лесом).
Т.е. "тривьюшный тултип" он уже ни фига не тривьюшный (да он и смещен вверх-влево, дефолтный всегда четко накладывается на родной текст узла)

Я конечно могу сделать свою
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Class TreeViewMy
  Inherits TreeView

  Protected Overrides Sub WndProc(ByRef m As Message)
    'Debug.Print(m.ToString)
    Select Case m.Msg
      Case WM_NOTIFY
        Dim nmhdr As NMHDR = CType(Marshal.PtrToStructure(m.LParam, GetType(NMHDR)), NMHDR)
        Select Case nmhdr.code
          Case TTN_SHOW
            Debug.Print("TTN_SHOW")



А дальше у меня какие варианты?
Могу сделать Exit sub, но тогда я в дефолтное API-поведение уже не попадаю
Могу сделать MyBase.WndProc(m), но тогда я попадаю опять в лапы кода который я цитировал выше
А как мне обойти .Net код, при этом прийти в дефолтную API-процедуру, при кот. срабатывает TVS_EX_RICHTOOLTIP?

Еще есть подозрение(?) что что-то не так с ImageList, по крайней мере скормить API-ImageList через TVM_SETIMAGELIST мне не удается. Тогда соответственно вопрос, а содержится ли вообще картинка в TTN_SHOW...

Вообще конечно проще на это забить с моими м.б. 3-4 узлами с относит. длинным текстом. Ну надо красоту, раздвинь дерево вправо ибо возможность есть.

А с API, там неделю сидеть ковыряться, еще проблема с фокусом будет и куча всего еще, ну его.
...
Рейтинг: 0 / 0
21.07.2016, 20:49
    #39278227
kealon(Ruslan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77,

может поможет, часть 100% рабочего исходника
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function TWTreeView.GetRootNode: TWTreeViewItem;
begin
  Result.Ctrl:=Ctrl;
  Result.FId:= TVI_ROOT;
end;

function TWTreeViewItem.Append(const AText: WinString; AImageIndex: integer): TWTreeViewItem;
var info:tagTVINSERTSTRUCTW;
begin
  info.hParent:=id;
  info.hInsertAfter:=TVI_LAST;

  info.item.mask:=TVIF_TEXT or TVIF_IMAGE or TVIF_SELECTEDIMAGE;
  info.item.pszText:=PWinChar(AText);
  info.item.cchTextMax:=Length(AText);
  info.item.iImage:=AImageIndex;
  info.item.iSelectedImage:=AImageIndex;


  Result.FId:=HTREEITEM(Ctrl.Perform(TVM_INSERTITEMW,0,LPARAM(@info)));
  Result.Ctrl:=Ctrl;
end;
...
Рейтинг: 0 / 0
22.07.2016, 12:22
    #39278531
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77А дальше у меня какие варианты?
Могу сделать Exit sub, но тогда я в дефолтное API-поведение уже не попадаюну так это же и нужно. сам рисуешь свой тултип по этому событию, а дефолтное поведение идет лесом.
...
Рейтинг: 0 / 0
22.07.2016, 13:07
    #39278596
fortibransa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Прикольно читать топики Дмитрий77.
...
Рейтинг: 0 / 0
22.07.2016, 15:51
    #39278785
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Antonariyну так это же и нужно. сам рисуешь свой тултип по этому событию, а дефолтное поведение идет лесом.
Не, не хочу. Нужно чтоб лесом шло Net- дефолтное а не API- дефолтное, которое в .Net-контроле именно и идет лесом.

Я все же решил набросать свой TreeView.
...
Рейтинг: 0 / 0
22.07.2016, 21:39
    #39279024
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77Я все же решил набросать свой TreeView.
Вам же уже писали про WPF
...
Рейтинг: 0 / 0
22.07.2016, 21:45
    #39279026
Дмитрий77
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Cat2,

А я уже отвечал про WPF.
...
Рейтинг: 0 / 0
22.07.2016, 21:57
    #39279031
Cat2
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Никто не знает примера как в .Net на чистом API Treeview сделать?
Дмитрий77Cat2,

А я уже отвечал про WPF.
Кушайте кактус дальше, что бы все было "как в Дельфи"
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Никто не знает примера как в .Net на чистом API Treeview сделать? / 20 сообщений из 20, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]