1 usingPropertyGridHelpers.Controls; 2 usingSystem; 3 usingSystem.Collections.Generic; 4 usingSystem.ComponentModel; 5 usingSystem.Drawing.Design; 6 usingSystem.Windows.Forms; 7 usingSystem.Windows.Forms.Design; 8 9 namespacePropertyGridHelpers.UIEditors 10 { 11 12 public classFlagEnumUIEditor : UITypeEditor 13 { 14 privateCheckedListBoxEx check; 15 16 publicFlagEnumUIEditor() 17 { 18 check = newCheckedListBoxEx(); 19 check.BorderStyle =BorderStyle.None; 20 } 21 22 public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, objectvalue) 23 { 24 if (context != null && context.Instance != null && provider != null) 25 { 26 IWindowsFormsEditorService service = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); 27 if (service != null) 28 { 29 List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(); 30 for (int i = 0; i < 100; i++) 31 { 32 list.Add(new KeyValuePair<string, string>(i.ToString(), Guid.NewGuid().ToString("N"))); 33 } 34 check.DataSource =list; 35 service.DropDownControl(check); 36 returncheck.GetSelectItemValueText; 37 } 38 } 39 return null; 40 } 41 42 public overrideUITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) 43 { 44 returnUITypeEditorEditStyle.DropDown; 45 } 46 } 47 }
1 usingSystem; 2 usingSystem.ComponentModel; 3 usingSystem.Windows.Forms; 4 usingSystem.Collections.Generic; 5 usingSystem.Linq; 6 7 namespacePropertyGridHelpers.Controls 8 { 9 10 public classCheckedListBoxEx : CheckedListBox 11 { 12 private Container components = null; 13 publicCheckedListBoxEx() 14 { 15 InitializeComponent(); 16 } 17 protected override void Dispose(booldisposing) 18 { 19 if(disposing) 20 { 21 if (components != null) 22 components.Dispose(); 23 } 24 base.Dispose(disposing); 25 } 26 27 #region Component Designer generated code 28 29 private voidInitializeComponent() 30 { 31 this.CheckOnClick = true; 32 } 33 protected override voidOnItemCheck(ItemCheckEventArgs e) 34 { 35 base.OnItemCheck(e); 36 } 37 #endregion 38 39 #region Add 40 public CheckItem Add(string code, stringvalue) 41 { 42 CheckItem item = newCheckItem(code, value); 43 Items.Add(item); 44 returnitem; 45 } 46 publicCheckItem Add(CheckItem item) 47 { 48 Items.Add(item); 49 returnitem; 50 } 51 #endregion 52 #region 获取选择值 53 public string GetSelectItemValueText { get { return string.Join(",", GetSelectItemAll.Select(n =>n.Value)); } } 54 public string GetSelectItemKeyText { get { return string.Join(",", GetSelectItemAll.Select(n =>n.Key)); } } 55 public List<KeyValuePair<string, string>>GetSelectItemAll 56 { 57 get 58 { 59 List<KeyValuePair<string, string>> list = new List<KeyValuePair<string, string>>(); 60 for (int i = 0; i < Items.Count; i++) 61 { 62 CheckItem item = Items[i] asCheckItem; 63 if(GetItemChecked(i)) 64 { 65 list.Add(new KeyValuePair<string, string>(item.Code, item.Value)); 66 } 67 } 68 returnlist; 69 } 70 } 71 #endregion 72 private objectdata; 73 /// <summary> 74 ///绑定数据源 75 /// </summary> 76 /// <param name="data"></param> 77 public new objectDataSource 78 { 79 get 80 { 81 returndata; 82 } 83 set 84 { 85 data =value; 86 if (data is IEnumerable<KeyValuePair<string, string>>) 87 { 88 foreach (KeyValuePair<string, string> item in (data as IEnumerable<KeyValuePair<string, string>>)) 89 { 90 Add(item.Key, item.Value); 91 } 92 } 93 else if (data is IEnumerable<CheckItem>) 94 { 95 foreach (CheckItem item in (data as IEnumerable<CheckItem>)) 96 { 97 Add(item); 98 } 99 } 100 } 101 } 102 103 } 104 }
1 namespacePropertyGridHelpers.Controls 2 { 3 /// <summary> 4 ///Represents an item in the checklistbox 5 /// </summary> 6 public classCheckItem 7 { 8 public stringValue; 9 public stringCode; 10 public CheckItem(string code, stringvalue) 11 { 12 this.Value =value; 13 this.Code =code; 14 } 15 public override stringToString() 16 { 17 returnValue; 18 } 19 } 20 21 }
1 usingPropertyGridHelpers.UIEditors; 2 usingSystem.ComponentModel; 3 usingSystem.Windows.Forms; 4 5 namespaceWindowsFormsApplication1 6 { 7 public partial classForm1 : Form 8 { 9 publicForm1() 10 { 11 InitializeComponent(); 12 propertyGrid1.SelectedObject = newPropertyList(); ; 13 } 14 } 15 classPropertyList 16 { 17 stringm_dir; 18 [EditorAttribute(typeof(FlagEnumUIEditor), typeof(System.Drawing.Design.UITypeEditor))] 19 [DisplayName("Direction")] 20 [Description("Direction property")] 21 public stringDir 22 { 23 get 24 { 25 returnm_dir; 26 } 27 set 28 { 29 m_dir =value; 30 } 31 } 32 } 33 34 }
源码分享
链接:https://pan.baidu.com/s/1e8D-WoTYmA-D7vm88TTQrA
提取码:bdrd
复制这段内容后打开百度网盘手机App,操作更方便哦