代码如下
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Drawing; 5 using System.Data; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.Collections; 10 using System.Reflection; 11 using Newtonsoft.Json.Linq; 12 13 namespace ControlsAA 14 { 15 public class ComboBoxEx : ComboBox 16 { 17 TreeView lst = new TreeView(); 18 19 public ComboBoxEx() 20 { 21 this.DrawMode = DrawMode.OwnerDrawFixed;//只有设置这个属性为OwnerDrawFixed才可能让重画起作用 22 lst.KeyUp += new KeyEventHandler(lst_KeyUp); 23 lst.MouseUp += new MouseEventHandler(lst_MouseUp); 24 // lst.KeyDown += new KeyEventHandler(lst_KeyDown); 25 lst.Leave += new EventHandler(lst_Leave); 26 lst.CheckBoxes = true; 27 lst.ShowLines = false; 28 lst.ShowPlusMinus = false; 29 lst.ShowRootLines = false; 30 this.DropDownHeight = 1; 31 } 32 33 void lst_Leave(object sender, EventArgs e) 34 { 35 lst.Hide(); 36 } 37 #region Property 38 39 [Description("选定项的值"), Category("Data")] 40 public List<TreeNode> SelectedItems 41 { 42 get 43 { 44 List<TreeNode> lsttn = new List<TreeNode>(); 45 foreach (TreeNode tn in lst.Nodes) 46 { 47 if (tn.Checked) 48 { 49 lsttn.Add(tn); 50 } 51 } 52 return lsttn; 53 } 54 } 55 56 /// <summary> 57 /// 数据源 58 /// </summary> 59 [Description("数据源"), Category("Data")] 60 public object DataSource 61 { 62 get; 63 set; 64 } 65 /// <summary> 66 /// 显示字段 67 /// </summary> 68 [Description("显示字段"), Category("Data")] 69 public string DisplayFiled 70 { 71 get; 72 set; 73 } 74 /// <summary> 75 /// 值字段 76 /// </summary> 77 [Description("</