- Dynamic Property Grid
- PropertyGrid: DropDown Editor
- PropertyGrid: DropDown Property
- PropertyGrid: CheckBoxList Editor
- PropertyGrid: CheckBoxList Property
You may want to add a checkboxlist to your property grid. If you do then the below code is what you will need to create the editor.
Build the CheckBox List Editor
- public class CheckBoxListEditor : System.Drawing.Design.UITypeEditor
- {
- private IWindowsFormsEditorService es = null;
- public override UITypeEditorEditStyle GetEditStyle(System.ComponentModel.ITypeDescriptorContext context)
- {
- return UITypeEditorEditStyle.DropDown;
- }
- public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
- {
- if (provider != null)
- {
- // This service is in charge of popping our ListBox.
- es = ((IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)));
- if (es != null && value is CheckBoxList)
- {
- var property = (CheckBoxList)value;
- var cl = new CheckedListBox();
- cl.CheckOnClick = true;
- Dictionary<String, Boolean> vals = new Dictionary<string, bool>();
- foreach (KeyValuePair<String, Boolean> kvp in property.Values)
- {
- vals[kvp.Key] = kvp.Value;
- cl.Items.Add(kvp.Key, kvp.Value);
- }
- // Drop the list control.
- es.DropDownControl(cl);
- if (cl.SelectedItem != null )
- {
- vals[cl.SelectedItem.ToString()] = !vals[cl.SelectedItem.ToString()];
- property.Values = vals;
- property.SelectedItem = String.Join(", ", (from v in vals where v.Value == true select v.Key).ToList());
- value = property;
- }
- }
- }
- return value;
- }
- }