2011-07-19 13 views
0

これで、WPF/XAMLバインディングのタブネームをTreeViewに取り込むことができましたが、以前はC#Windowsフォームでこれを行っていませんでした。C#TabControlを使用したTreeViewの設定

オープンしているファイルに基づいてプロジェクト名を表示したいと思っています(これらはスタティックです - エディタと他のフィールドと呼ばれています)。

後でコンテキストメニューを追加しますが、唯一の目的は、ツリービューからのクリックイベントで状態に基づいてタブを表示することです。

私の問題は、ツリービューでそれらを関連付ける方法を理解できないことです。私はこのコードを見つけた、誰かが私がここに正しい道にいるかどうか教えてもらえますか?

private void treeView1_AfterSelect(Object sender, TreeViewEventArgs e) 
    { 

     // Set the visibility of the tabpages from the treeview 
     if ((e.Action == TreeViewAction.ByMouse)) 
     { 
      if (e.Node.Name == "Editor") 
      { 
       this.editForm.tabControl1.SelectedTab = editForm.Editor; 
      } 
      if (e.Node.Name == "Fields") 
      { 
       this.editForm.tabControl1.SelectedTab = editForm.Fields; 
      } 
     } 
    } 

答えて

0

あなたは、関連するタブ名を保持するためのTreeNodeのTag propertyを使用することができます。

if (e.Action == TreeViewAction.ByMouse) 
{ 
    TabPage p = tabControl1.TabPages[e.Node.Tag] 
    tabControl1.SelectedTab = p; 
} 
+0

こんにちは!あなたの応答を見ただけです。私は実際に私の最初の質問で編集したコードで作業している。それは間違った方法ですか? – fgoldman

+0

でも動作しますが、各ノード名を個別に処理する必要があります。ノード名を追加するか、タブ名の1つを変更するとどうなりますか?私は、最も柔軟な解決策は、あなたのアプリケーションの初期化のある時点で、あなたのTreeItemsをTabPagesに基づいて動的に(あるいはその逆に)追加することだと思います。次に、他の名前を設定し、名前を除いて上記で提供した方法を使用することができます。そのようなメソッドの例は、 です。foreach(tabControl1のTabPageタブ) { TreeNodeノード=新しいTreeNode(tab.Text); treeView1.Nodes.add(node); } ' – devin

関連する問題