private void InitTreeView() {
this.AllowDrop = true;
this.ShellTreeView = new TreeViewBase();
this.ShellTreeView.Dock = DockStyle.Fill;
this.ShellTreeView.BackColor = Color.White;
this.ShellTreeView.BorderStyle = F.BorderStyle.None;
this.ShellTreeView.AllowDrop = true;
this.ShellTreeView.HideSelection = false;
this.ShellTreeView.ShowLines = false;
this.ShellTreeView.HotTracking = true;
this.ShellTreeView.LabelEdit = true;
this.ShellTreeView.DrawMode = TreeViewDrawMode.OwnerDrawAll;
this.ShellTreeView.DrawNode += ShellTreeView_DrawNode;
this.ShellTreeView.BeforeExpand += ShellTreeView_BeforeExpand;
this.ShellTreeView.AfterExpand += ShellTreeView_AfterExpand;
this.ShellTreeView.MouseDown += ShellTreeView_MouseDown;
this.ShellTreeView.HandleDestroyed += ShellTreeView_HandleDestroyed;
this.ShellTreeView.ItemDrag += ShellTreeView_ItemDrag;
this.ShellTreeView.AfterSelect += ShellTreeView_AfterSelect;
this.ShellTreeView.NodeMouseClick += ShellTreeView_NodeMouseClick;
this.ShellTreeView.AfterLabelEdit += ShellTreeView_AfterLabelEdit;
this.ShellTreeView.KeyDown += ShellTreeView_KeyDown;
this.ShellTreeView.DragEnter += ShellTreeView_DragEnter;
this.ShellTreeView.DragOver += ShellTreeView_DragOver;
this.ShellTreeView.DragLeave += ShellTreeView_DragLeave;
this.ShellTreeView.DragDrop += ShellTreeView_DragDrop;
this.ShellTreeView.GiveFeedback += ShellTreeView_GiveFeedback;
this.ShellTreeView.MouseMove += ShellListView_MouseMove;
this.ShellTreeView.MouseEnter += ShellTreeView_MouseEnter;
this.ShellTreeView.MouseLeave += ShellTreeView_MouseLeave;
//this.ShellTreeView.MouseWheel += ShellTreeView_MouseWheel;
//this.ShellTreeView.VerticalScroll += ShellTreeView_VerticalScroll;
//this.ShellTreeView.BeforeSelect += ShellTreeView_BeforeSelect;
if (this.ShellListView != null) {
this.ShellListView.Navigated += ShellListView_Navigated;
}
SystemImageList.UseSystemImageList(ShellTreeView);
ShellTreeView.FullRowSelect = true;
var defIconInfo = new Shell32.SHSTOCKICONINFO() { cbSize = (uint)Marshal.SizeOf(typeof(Shell32.SHSTOCKICONINFO)) };
Shell32.SHGetStockIconInfo(Shell32.SHSTOCKICONID.SIID_FOLDER, Shell32.SHGSI.SHGSI_SYSICONINDEX, ref defIconInfo);
this.folderImageListIndex = defIconInfo.iSysIconIndex;
imagesThread = new Thread(new ThreadStart(LoadTreeImages)) { IsBackground = true };
imagesThread.SetApartmentState(ApartmentState.STA);
imagesThread.Start();
childsThread = new Thread(new ThreadStart(LoadChilds)) { IsBackground = true };
childsThread.Start();
}