DOBON.NET DOBON.NETプログラミング掲示板過去ログ

TreeViewのBeforeExpandイベントについて

環境/言語:[OS:WindowsXP、開発環境:VS2008(.NET3.5 C#)]
分類:[.NET]

TreeViewを使用してエクスプローラーのようにディレクトリの一覧を表示しています。
その際、親となるフォームの表示/非表示を切り替えると
表示時にBeforeExpandイベントが発生して、ツリー階層の生成処理が走ってしまいます。

どうにかして、フォームShow時のBeforeExpandイベントを判断したいのですが
良い案は無いでしょうか?

【コード】
private void Explorer_BeforeExpand(object sender, System.Windows.Forms.TreeViewCancelEventArgs e)
{
  TreeViewExpand(e.Node);
}

private void TreeViewExpand(System.Windows.Forms.TreeNode node)
{
  System.IO.DirectoryInfo directory;
  System.Windows.Forms.TreeNode nd;
  string path;

  node.Nodes.Clear();

  path = node.FullPath;

  if (System.IO.Directory.Exists(path))
  {
    directory = new System.IO.DirectoryInfo(path);

    foreach (System.IO.DirectoryInfo di in directory.GetDirectories())
    {
      nd = node.Nodes.Add(di.Name);

      if (di.GetDirectories().Length > 0)
      {
        nd.Nodes.Add("dummy");
      }
    }
  }
}
■No28395に返信(まとぱぱさんの記事)

VisibleChangedイベントでEventhandlerをはずしたりつけたりするか、
イベントを行う用のフラグを持たせその内容を同イベントで切り替えるとか
どうでしょう?
shuさん

フォームのVisibleChangedイベントにてBeforeExpandイベントの登録/削除を行うことで
無事解決いたしました。
(イベントの実行順を考えれば単純なことでしたね・・・)

ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板