/// <summary> /// サブディレクトリが作成された時の処理。 /// </summary> private void SubdirCreated(string path) { // アイテムが展開されていない場合は何もしない(再展開時に更新されるので) if (!this.IsExpanded) { if (this.Nodes.Count == 0) { this.Nodes.Add("PH"); // 子ノード数が0だと次回展開することができないのでダミー追加 } return; } // 作成されたディレクトリの親に対応するアイテムを検索 FolderTreeNode parentNode; string parentPath = System.IO.Path.GetDirectoryName(path); if (string.Compare(parentPath, m_ShellItem.Path, true) == 0) { parentNode = this; } else { parentNode = FindChild(parentPath); if (parentNode == null) { return; } } FolderTreeNode node; try { // 作成されたディレクトリに対応するノードを作成 node = new FolderTreeNode(new ShellItem(path)); } catch (Exception) { // 作成された直後に削除されたりすると対応する ShellItem が作れずに例外が発生するので普通にリターン return; } // 作成されたディレクトリに対応するアイテムを追加 node.UpdateChildren(); //if (this.TreeView != null) // this.TreeView.BeginUpdate(); parentNode.Nodes.Add(node); //if (this.TreeView != null) //{ // this.TreeView.Sort(); // this.TreeView.EndUpdate(); //} }
/// <summary> /// BeforeExpand イベントトリガをオーバーライド。 /// </summary> protected override void OnBeforeExpand(TreeViewCancelEventArgs e) { FolderTreeNode ftn = e.Node as FolderTreeNode; if (ftn != null) { // ファイル監視開始 ftn.StartFileWatch(); // 子ノード更新 ftn.UpdateChildren(); } base.OnBeforeExpand(e); }