本文转载:http://www.cnblogs.com/hoodlum1980/archive/2008/01/30/1058140.html

在我印象中有很多各种各样的自定义控件(例如TreeListView,Office侧边控件,CRM侧边控件,Leds等等)。它们具有的共同点是具有一些迷人特性,并且在标准控件库中不提供它们。我想起一定有一种控件是TreeComboBox,或者叫做TreeSelectControl,是否叫这个名字我不确定,特点是类似ComboBox,但下拉时显示的是树状列表。我到其他网站上去找,但是并不是很容易找到。又想起我在以前的项目中曾经做过这种选择控件,想象中这个任务不是非常的难,于是今天我又把它拿出来另外制作一个。我只需要一个TextBox,一个Button,一个TreeView就可以组合成这个控件了。效果如下图:
      
      在TreeView中可以用TreeView标准操作,左右方向键展开和折叠节点,用上下选择节点。双击或者按回车键用于确定选中节点。 
      这里面的代码也是很基本的,不涉及过高的技巧性,唯一的技巧在于,下拉窗口的位置,要根据控件的屏幕位置决定,首先尝试在下面显示,如果空间不够则在上面显示。不过问题是,现在我只是贪图容易把treeview加到容器上,这要求容器必须足够大,否则下拉的treeview就会部分被遮挡(而标准ComboBox的下拉窗口则不会被遮挡)。所以如果解决该问题,需要把下拉控件“贴”到“屏幕窗口”上,并且带到Z次序最顶层,类似一些普通桌面程序。
      另外由于不想把内部控件直接公开给外部,所以牵涉到很多属性和方法的封装到外部,这就会引入很大的烦琐工作量,同样为了简单,仅仅公开了最必要的一些属性和事件。

源代码下载链接:
      http://files.cnblogs.com/hoodlum1980/TreeComboBox.rar

https://github.com/ryanm101/filtertreeview

TreeComboBox控件范例的更多相关文章

  1. [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField)

    [.ashx檔?泛型处理程序?]基础入门#5....ADO.NET 与 将DB里面的二进制图片还原 (范例下载 & 大型控件的ImageField) http://www.dotblogs.c ...

  2. FileUpload控件「批次上传 / 多档案同时上传」的范例--以「流水号」产生「变量名称」

    原文出處  http://www.dotblogs.com.tw/mis2000lab/archive/2013/08/19/multiple_fileupload_asp_net_20130819. ...

  3. DevExpress2011控件教程)编辑控件(comboBox,AspxCheckBox) 范例1

    DevExpress2011控件教程)编辑控件(comboBox,AspxCheckBox) 范例1 AspxCheckBox 是一个检查编辑控件去展示特殊条件是否关闭或者打开.它一般会展示Yes/N ...

  4. Android自定义用户控件简单范例(二)

    对于完全由后台定制的控件,并不是很方便其他人的使用,因为我们常常需要看到控件放到xml界面上的效果,并根据效果进行布局的调整,这就需要一个更加标准的控件制作流程: 我们的自定义控件和其他的控件一样,应 ...

  5. Android自定义用户控件简单范例(一)

    一款优秀的移动应用需要具有自己独特统一的风格,通常情况下UI设计师会根据产品需求和使用人群的特点,设计整体的风格,界面的元素和控件的互效果.而原生态的Android控件为开发人员提供的是最基本的积木元 ...

  6. VB中PictureBox控件使用教程

    PictureBox对象可以说是任何对象的原始型态,它可以加载图片.显示文字.画图外,它还能与Frame对象一样,在自己本身里头加载其它的对象而自成一个小群组,用PictureBox可以仿真出任何对象 ...

  7. ExtJs控件属性配置详细

    序言:    1.本文摘自网络,看控件命名像是4.0以前的版本,但控件属性配置仍然可以借鉴(不足之处,以后项目用到时再续完善). Ext.form.TimeField: 配置项:            ...

  8. Cesium应用篇:3控件(2)BaseLayerPicker

    所有范例均在github中搜索:ExamplesforCesium BaseLayerPicker控件非常简单,似乎没什么可说的,确实非常的简单,但作为一个底图选择控件,可以说是最基本的一个控件. C ...

  9. Cesium应用篇:3控件(3)SelectionIndicator& InfoBox

    假设这样一个场景,用户在Cesium球上加载了一个GeoJson文件(DataSource),里面是全美国所有州的Geometry信息(Entity),叠加到球面后,你自然会有一种冲动,点击某一个州, ...

随机推荐

  1. 谈memcache和memcached的区别

    用了段时间的memcache和memcached总结下认识,看很多人在用cache的时候,刚刚都没有搞清楚memcache 和 memcached的区别,还有就是使用的时候基本都是 get/set   ...

  2. InstallShield自定义图片资源

    DialogSetInfo ( nInfoType, szInfoString, nParameter );   nInfoType: DLG_INFO_ALTIMAGE-Specifies an a ...

  3. C# Dispose Finalize

    比较值得参考的文档:http://www.jb51.net/article/37214.htm. .NET 的内存管理过程: 托管堆假设内存无限大,线性连续分配内存: 实际内存不够使用时,遍历托管堆对 ...

  4. Python学习笔记(一)Python安装及环境变量的配置

    1.下载python安装包. 下载地址:https://www.python.org/ 2.配置环境变量 找到python的安装路径.C:\Python27;script的路径:C:\Python27 ...

  5. css filter详解

    css filter详解 filter 属性详解 属性 名称 类型 说明 grayscale 灰度 值为数值 取值范围从0到1的小数(包括0和1) sepia 褐色 值为数值 取值范围从0到1的小数( ...

  6. iOS MD5加密算法

    考虑到用户账户安全,对用户的登录密码进行MD5加密 什么是MD5加密呢...懒了就不在这搬砖了,大家可以自己搜索查查,在此记录下代码,以供以后学习查询! 下面,直接上代码... // 需要倒入这个头文 ...

  7. C#反射(二) 【转】

    如果没有看<C#反射(一)>.建议先看<C#反射(一)>再看这一篇.上一篇文章发表,有人评论我所写的东西比较基础.其实我也知道我也只不过是在写最基础的语法而已,之所以写它是因为 ...

  8. PhoneGap + Dreamweaver 5.5 无法在模拟器中打开的问题(二)

    转载:http://blog.csdn.net/dupang/article/details/8248335 按照网上的教程搭建Dreamweaver CS5.5+PhoneGap移动开发环境,在进行 ...

  9. .froxlor 玩起

    其实,细想想, 这方面很有操作余地的哟.

  10. 第1章(三)安装VS2015和Xamarin For VS

    原文 第1章(三)安装VS2015和Xamarin For VS 操作系统:Win7  64位(sp1或更高版本) 1.安装VS2015 VS2015简体中文企业版:vs2015.ent_chs.is ...