- PR -

C# TreeViewのソートについて

1
投稿者投稿内容
あきら
会議室デビュー日: 2007/12/05
投稿数: 2
投稿日時: 2007-12-05 17:54
はじめまして
C#の勉強中なのですが、ツリービューにて以下のような現象が発生しているのですが
解決方法が見つからず悩んでいます。

■ 環境
・Windows XP Pro SP2
・VS2005 SP1
・.NET FrameWork2.0 SP1

■ やりたいこと
・F2の押下で選択されているノードのテキストを編集状態にする
・編集終了後にノードをソートする

■ ソース
private void treeView1_KeyDown(object sender, KeyEventArgs e) {
 if (e.KeyCode == Keys.F2){
  TreeNode tnSelNode = treeView1.SelectedNode;
  if (tnSelNode != null) {
   treeView1.LabelEdit = true;
   tnSelNode.BeginEdit();
  }
 }
}

private void treeView1_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
 e.Node.EndEdit(false);
 treeView1.LabelEdit = false;
 if (e.Label != null){
  e.Node.Text = e.Label;
  treeView1.Sort();
  treeView1.Refresh();
 }
}

■ 問題点
・テキスト編集していないノードのテキストまで表示上?変更される

例)
 初期状態
  AA
  BB
  CC
  DD

 先頭ノードのテキストをAA⇒CCCに変更
  CCC ・・・ ※1
  CC
  CCC
  DD

デバッグウィンドウで先頭ノード(※1)のテキストプロパティを見た場合は "BB" のままです。
初歩的な質問かもしれませんが、気がついた点があればご指摘願えればと思います。

Tesla
常連さん
会議室デビュー日: 2007/03/13
投稿数: 30
投稿日時: 2007-12-05 22:15
ソースをコピーして確認してみました。

・「デバッグ開始」で実行
あきらさんと同じ結果でした。

・「デバッグなしで開始」、もしくはEXEを実行
BB
CC
CCC
DD
と正しい結果になりました。
あきら
会議室デビュー日: 2007/12/05
投稿数: 2
投稿日時: 2007-12-06 10:32
Tesla さん始めまして。
おっしゃる通り、デバッグなしで開始すると望んでいる結果になりました。
デバッグのあり・なし で表示が異なるのは不思議ですね
1

スキルアップ/キャリアアップ(JOB@IT)