I know that there is a RadRange Attribute but using it creates a dependency on Telerik.
Consider the scenario that the object to be configured via RadPropertyGrid is defined in a library that is used by multiple projects.
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
Until the new feature is officially released please use the implementation in the attached project.
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); } }
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); } }
Extend the sorting functionality in order to support custom sort order.
More specifically the behavior when the combobox editor is double clicked it changes its current item to the next one.
Currently users can only specify a UITypeEditor. They should be able to specify which BaseInputEditor to be used for a given property when they edit it: [Editor(typeof(PropertyGridBrowseEditor), typeof(BaseInputEditor)] public string FilePath { get; set; }
Currently when expanding an item in RadPropertyGrid the order of the sub items changes on every start.
The RadPropertyGrid editing mechanism can be improved by adding ValueChanged/ing events similar to those in RadGridView.
RadPropertyGrid should not invalidate the properties when the help bar is resized.