zoukankan      html  css  js  c++  java
  • ComboBox+TreeView

    [一篮饭特稀原创,转载请注明出处http://www.cnblogs.com/wanghafan/archive/2012/05/10/2493799.html]

    银光中ComboBox+TreeView构成自定义控件: 

    思路1:textbox+button+treeview 缺点:不能跨ChildWindow、零散 [实现] 

    思路2:ComboBox+TreeView+textbox 优点:可以跨ChildWindow [实现]+[推荐

    思路3:ComboBox+TreeView 优点:可以跨ChildWindow、紧凑 [未实现] 

    给出思路2的核心代码:

    xaml:

    View Code
    1 <ComboBox Height="21" x:Name="cbTree">
    2     <ComboBoxItem>
    3      <ComboBoxItem.Content>
    4        <controls:TreeView x:Name="tvLeftOrgan" SelectedItemChanged="tvLeftOrgan_SelectedItemChanged"/>          
    5      </ComboBoxItem.Content>
    6     </ComboBoxItem>
    7    </ComboBox>
    8    <TextBox Height="21" x:Name="tbTree"/>    

     xaml.cs:

    View Code
     1 private void tvLeftOrgan_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
     2         {
     3             if (tvLeftOrgan.Items.Count > 0)
     4             {
     5                 ComboBoxSelect tvs = new ComboBoxSelect();
     6                 tvs.id = ((TreeViewItem)tvLeftOrgan.SelectedItem).DataContext.ToString();
     7                 tvs.name = ((TreeViewItem)tvLeftOrgan.SelectedItem).Header.ToString();   
     8                 tbTree.Text = tvs.name;
     9             }
    10         }
    11 
    12     public class ComboBoxSelect : ComboBoxItem
    13     {
    14         public string name=string.Empty;
    15         public string id = string.Empty;
    16     }

     思路3: 

    与思路2大体相同,但是:

    View Code
     1   public class info
     2     {
     3         public string name = "fdfs";
     4         public string id = "df";
     5         public info(string n, string i)
     6         {
     7             name = n;
     8             id = i;
     9                 
    10         }
    11         public override string ToString()
    12         {
    13             return name;
    14         }
    15     }
    16 
    17         void cbTree_DropDownOpened(object sender, EventArgs e) //打开时,清空并加载treeview
    18         {
    19             cbTree.Items.Clear();
    20             cbTree.Items.Add(tv);
    21         }
    22         void cbTree_DropDownClosed(object sender, EventArgs e) //关闭时,清空并加载1个treeviewitem,这样可以防止选中整个treeview而不显示选中的内容
    23         {
    24             cbTree.Items.Clear();
    25             cbTree.Items.Add((tv.SelectedItem as TreeViewItem).Header);
    26             cbTree.SelectedIndex = 0;
    27         }

      

  • 相关阅读:
    单例模式学习(一)
    java线程池学习(一)
    redis面试总结(二)
    redis面试总结(一)
    spark 内存溢出处理
    大数据面试总结(一)
    Spark 知识点总结--调优(一)
    组合数据类型
    一些小细节
    文件归档
  • 原文地址:https://www.cnblogs.com/wanghafan/p/2493799.html
Copyright © 2011-2022 走看看