ComboBox的下拉选项的树状显示的几种方法对比

本文探讨了在ComboBox中实现下拉树状选项的多种方法,包括使用现成控件、TreeView、ListView以及结合TextBox和CheckBox的解决方案。作者在尝试中遇到的问题和最后选择的存储过程方法进行了详述。
摘要由CSDN通过智能技术生成

 因为项目里需要在ComboBox里的下拉框里填充树状的选择项,我个人感觉最好还可以做到子结点的伸缩,因此颇费了一些功夫,现在大体做了个总结。

1。第一考虑的是下载现成的控件。
网上找了几个:
1)http://www.codeproject.com/cs/miscctrl/customcombos.asp
2)http://www.codetools.com/cs/miscctrl/ComboBoxTree.asp

第一个不好用,第2个可以用,不过总有问题。每次你在加载了ComboBoxTree的页面添加或修改别的控件后,运行就报错,需要在初始化函数里把一个值人工改为空。而且这个控件只能把每项的name的string值呈现树形,而不能把每个ITEM的text和value一一对应,总之用的不顺手,就放弃了。

         test

 

2。用treelistView,鼠标单击columnHeader,则把treeListView的高度变高,鼠标落在别的区域,则高度收缩,

有多种方式可以实现WPF XAML ComboBox下拉选项切换显示不同Page,以下是其中的几种方式: 1. 使用Frame控件 在ComboBox的SelectedIndexChanged事件中,可以根据选择的选项来动态加载不同的Page到Frame控件中。 XAML代码示例: ```xml <Grid> <ComboBox x:Name="comboBox" SelectedIndexChanged="ComboBox_SelectedIndexChanged"> <ComboBoxItem>Page1</ComboBoxItem> <ComboBoxItem>Page2</ComboBoxItem> <ComboBoxItem>Page3</ComboBoxItem> </ComboBox> <Frame x:Name="frame" Grid.Row="1"/> </Grid> ``` C#代码示例: ```csharp private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBoxItem selectedItem = comboBox.SelectedItem as ComboBoxItem; switch (selectedItem.Content.ToString()) { case "Page1": frame.Navigate(new Page1()); break; case "Page2": frame.Navigate(new Page2()); break; case "Page3": frame.Navigate(new Page3()); break; } } ``` 2. 使用TabControl控件 在ComboBox的SelectedIndexChanged事件中,可以根据选择的选项来切换TabControl控件的选项卡,每个选项卡中分别添加不同的Page。 XAML代码示例: ```xml <Grid> <ComboBox x:Name="comboBox" SelectedIndexChanged="ComboBox_SelectedIndexChanged"> <ComboBoxItem>Page1</ComboBoxItem> <ComboBoxItem>Page2</ComboBoxItem> <ComboBoxItem>Page3</ComboBoxItem> </ComboBox> <TabControl x:Name="tabControl" Grid.Row="1"> <TabItem Header="Page1"/> <TabItem Header="Page2"/> <TabItem Header="Page3"/> </TabControl> </Grid> ``` C#代码示例: ```csharp private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBoxItem selectedItem = comboBox.SelectedItem as ComboBoxItem; switch (selectedItem.Content.ToString()) { case "Page1": tabControl.SelectedIndex = 0; break; case "Page2": tabControl.SelectedIndex = 1; break; case "Page3": tabControl.SelectedIndex = 2; break; } } ``` 3. 使用UserControl控件 在ComboBox的SelectedIndexChanged事件中,可以根据选择的选项来动态加载不同的UserControl控件。 XAML代码示例: ```xml <Grid> <ComboBox x:Name="comboBox" SelectedIndexChanged="ComboBox_SelectedIndexChanged"> <ComboBoxItem>Page1</ComboBoxItem> <ComboBoxItem>Page2</ComboBoxItem> <ComboBoxItem>Page3</ComboBoxItem> </ComboBox> <ContentControl x:Name="contentControl" Grid.Row="1"/> </Grid> ``` C#代码示例: ```csharp private void ComboBox_SelectedIndexChanged(object sender, EventArgs e) { ComboBoxItem selectedItem = comboBox.SelectedItem as ComboBoxItem; switch (selectedItem.Content.ToString()) { case "Page1": contentControl.Content = new UserControl1(); break; case "Page2": contentControl.Content = new UserControl2(); break; case "Page3": contentControl.Content = new UserControl3(); break; } } ``` 以上是几种实现WPF XAML ComboBox下拉选项切换显示不同Page的方式,具体实现方式可以根据实际需求选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值