How to create a PropertyGrid and initialize it like this,modify the 'segments' arraies as I modify the 'count'
Currently, the ExpandableObjectConverter is the appropriate solution for adding nested properties in RadPropertyGrid. Using TypeConverters is quite a flexible mechanism that RadPropertyGrid offers: https://docs.telerik.com/devtools/winforms/controls/propertygrid/type-converters
It would be nice to have a more flexible and easy approach, e.g. PropertyStoreItem .Items collection that allows you to add nested properties.
When you have a property that is bool? or ToggleState, it would be good to have three-state functionality for the PropertyGridCheckBoxItemElement.
This should work similar to RadGridView. Once should be able to manually set the height of on individual rows as well.
RadSpinEditor now supports null values. This functionality is relevant for the PropertyGridSpinEditor as well http://docs.telerik.com/devtools/winforms/editors/spineditor/null-value-support
Workaround: public class CustomPropertyGrid : RadPropertyGrid { public override string ThemeClassName { get { return typeof(RadPropertyGrid).FullName; } } protected override PropertyGridElement CreatePropertyGridElement() { return new CustomPropertyGridElement(); } } public class CustomPropertyGridElement : PropertyGridElement { protected override Type ThemeEffectiveType { get { return typeof(PropertyGridElement); } } protected override PropertyGridSplitElement CreateSplitElement() { return new CustomPropertyGridSplitElement(); } } public class CustomPropertyGridSplitElement : PropertyGridSplitElement { protected override Type ThemeEffectiveType { get { return typeof(PropertyGridSplitElement); } } protected override PropertyGridTableElement CreateTableElement() { return new CustomPropertyGridTableElement(); } } public class CustomPropertyGridTableElement:PropertyGridTableElement { protected override Type ThemeEffectiveType { get { return typeof(PropertyGridTableElement); } } public override bool ProcessKeyDown(KeyEventArgs e) { if (e.KeyData == Keys.Enter && ((PropertyGridItem)this.SelectedGridItem).PropertyType == typeof(bool)) { PropertyGridItem item = this.SelectedGridItem as PropertyGridItem; item.Value = !(bool)item.Value; return true; } return base.ProcessKeyDown(e); } }
Currently editors not shown as dialog do not work as the RadPropertyGrid editor is closed when focus is transferred to the dialog form.
Generic collections are used by entity framework to contain child objects. UPDATE: RadPropertygrid uses the standard System.ComponentMode.Design.CollectionEditor when editing collections. The editor requirements are that the collection being edited implements the IList interface and that it has an indexer (Item in VB.NET) property. Entity Framework generates an ICollection<T> property which holds a HasSet<T> object. This does not fit both requirements of the editor and prevents it from working correctly.
Developers should be able to validate user input in the RadPropertyStore items. UPDATE: Currently we have decided to stick with the current implementation where all the validation is done through the PropertyValidating/ed events.
Until the new feature is officially released please use the implementation in the attached project.
Currently when expanding an item in RadPropertyGrid the order of the sub items changes on every start.
Here is the code that should be used for custom sub-properties private void OnCreateItem(object sender, CreatePropertyGridItemEventArgs e) { e.Item = new MyPropertyGridItem((PropertyGridTableElement)sender, e.Parent); } As visual studio would be happy of you only provide a constructor with one argument when you inherit from PropertyGridItem you have no way of knowing that you need a second one where the parent should be the second argument. The proper way to handle this would be to set the parent internally.
Workaround: class MyRadPropertyGrid : RadPropertyGrid { protected override void WndProc(ref Message m) { switch (m.Msg) { case 0x7b: Point point; int x = Telerik.WinControls.NativeMethods.Util.SignedLOWORD(m.LParam); int y = Telerik.WinControls.NativeMethods.Util.SignedHIWORD(m.LParam); if (((int)((long)m.LParam)) == -1) { point = new Point(this.Width / 2, this.Height / 2); } else { point = this.PointToClient(new Point(x, y)); } this.PropertyGridElement.PropertyTableElement.ProcessContextMenu(point); return; } base.WndProc(ref m); } }
The RadPropertyGrid columns should be able to auto resize according to their cells content.
Add the ability for custom sorting in the RadPropertyGrid.
Extend the sorting functionality in order to support custom sort order.