To reproduce: please refer to the attached sample project. Try to select a new value from the drop-down editor and press Yes from the message box. Workaround: use the RadPropertyGrid.PropertyValueChanging event to confirm the property changing: private void radPropertyGrid1_PropertyValueChanging(object sender, Telerik.WinControls.UI.PropertyGridItemValueChangingEventArgs e) { e.Cancel = (MessageBox.Show("Are you sure you want to change this?", "Question", MessageBoxButtons.YesNo) != DialogResult.Yes); }
To reproduce: use a class with more than 100 properties for the RadPropertyGrid.SelectedObject. On RadButton.Click event set the RradPropertyGrid.PropertySort to PropertySort.CategorizedAlphabetical.
When a property has a TypeConverter and a UITypeEditor attributes the PropertyGridUITypeEditor calls the TypeConverter methods with the context parameter equal to null.
When the SelectedObject contains sub-properties and a user expands a property the CreateItem event is not fired for sub items.
If one sets an empty RadPropertyStore to the SelectedObject property of a RadPropertyGrid and then adds items with a RadSortOrder attribute the items will still be sorted by their name. WORKAROUNDS: 1. Populate the store before you set it to the property grid. 2. Add a dummy item to the store before you set it to the property grid and then remove it: RadPropertyStore store = new RadPropertyStore(); store.Add(typeof(bool), "dummy", false); this.radPropertyGrid1.SelectedObject = store; store.RemoveAt(0); 3. After you add the first item to the store call the following method: this.radPropertyGrid1.PropertyGridElement.PropertyTableElement.ListSource.CollectionView.EnsureDescriptors();
To reproduce: - Add RadPropertyGrid to a form and set the theme to MaterialTeal. The issue is observed in the ThemeViewer as well. Workaround: radPropertyGrid1.PropertyGridElement.ToolbarElement.AlphabeticalToggleButton.TextWrap = true; radPropertyGrid1.PropertyGridElement.ToolbarElement.CategorizedToggleButton.TextWrap = true; //or radPropertyGrid1.PropertyGridElement.ToolbarElementHeight = 68;
Steps to reproduce. 1. Drag a RadPropertyGrid to a form. 2. Set the selected object to a button for example. 3. Set the System.Threading.Thread.CurrentThread.CurrentUICulture to bg-BG for example 4. Run the project and try to edit the Size property. You will see that it is displayed in the format X;Y, but you have to enter string in the X,Y format otherwise you get an exception.
FIX. RadPropertyGrid - setting the SelectedObject to something and then set it to a property store, does not remove the initial items Workaround: clear the items prior setting the property store: this.radPropertyGrid1.PropertyGridElement.PropertyTableElement.ListSource.Clear();
To reproduce: -add a RadPropertyGrid and use the following code: radPropertyGrid.SelectedObject = new MyPropertyGridAdapter(node); PropertyValueChanging += new PropertyGridItemValueChangingEventHandler(OnPropertyValueChanging); private void OnPropertyValueChanging(object sender, PropertyGridItemValueChangingEventArgs e) { var form = new CommentActionForm(); if (form.ShowDialog() == System.Windows.Forms.DialogResult.OK) { var item = e.Item as PropertyGridItem; var pd = item.PropertyDescriptor as MyPropertyDescriptor; if (pd != null) { // Perform value change (affects database). } } else { e.Cancel = true; } } Workaround:when ending edit mode with Enter key you may use the following approach: public Form1() { InitializeComponent(); this.radPropertyGrid1.SelectedObject = new MyObject(10204, "Sample name", "Some descripion"); this.radPropertyGrid1.EditorRequired += radPropertyGrid1_EditorRequired; } private void radPropertyGrid1_EditorRequired(object sender, PropertyGridEditorRequiredEventArgs e) { PropertyGridItem propertyItem = e.Item as PropertyGridItem; e.Editor = new MyEditor(propertyItem); } public class MyObject { public int ID { get; set; } public string Name { get; set; } public string Description { get; set; } public MyObject(int iD, string name, string description) { this.ID = iD; this.Name = name; this.Description = description; } } public class MyEditor : PropertyGridTextBoxEditor { public string InitialValue { get; set; } public PropertyGridItem PropertyItem { get; set; } public MyEditor(PropertyGridItem item) : base() { this.PropertyItem = item; } public override void BeginEdit() { InitialValue = this.TextBoxEditorElement.Text; base.BeginEdit(); } } public class MyPropertyGrid : RadPropertyGrid { protected override bool ProcessDialogKey(Keys keyData) { if (this.ActiveEditor != null && this.ActiveEditor is MyEditor && keyData == Keys.Enter) { MyEditor editor = ((MyEditor)this.ActiveEditor); PropertyGridItem property = editor.PropertyItem; string initialValue = editor.InitialValue; DialogResult ds = RadMessageBox.Show("Are you sure?", "Title", MessageBoxButtons.OKCancel, RadMessageIcon.Question); if (ds == System.Windows.Forms.DialogResult.Cancel) { property.Value = initialValue; return false; } } return base.ProcessDialogKey(keyData); } }
When using a the following property store item: this.PropertyStore.Add(typeof(Image) , "Test Image" , null ); the user cannot select an image via the BrowseEditor.
To reproduce: - Create a property store and add some items to it. - Start the project and click an item. Workaround: - Add RadSortOrderAttribute to each item: for (int i = 0; i < propStore.Count; i++) { PropertyStoreItem item = propStore[i]; item.Attributes.Add(new RadSortOrderAttribute(i)); }
To reproduce: - Click on a property (with a dropdown editor for example) to start edit. - Move mouse over vertical center dividing line to get mouse to transition to resize pointer. - Move mouse to the right back over the combo box that has been activated for edit. - The mouse pointer will not transition back to the arrow, it will stay on the resize pointer.
Currently, the only possible way to set the value to null is to select the whole text and press the Delete key.
If the value is cleared by the backspace key, it is restored when the control loses focus.
If the value is cleared by multiple times clicking the delete key and the cursor is in the first position, the previous value is restored when the control loses focus.
Workaround:
Subscribe to the TextChanged event of the spin editor and explicitly set the NullableValue of the BaseSpinEditorElement:
this.radPropertyGrid1.EditorInitialized += this.RadPropertyGrid1_EditorInitialized;
private void RadPropertyGrid1_EditorInitialized(object sender, PropertyGridItemEditorInitializedEventArgs e)
{
if (e.Editor is PropertyGridSpinEditor spinEdit)
{
if (spinEdit.EditorElement is BaseSpinEditorElement editorElement && editorElement.EnableNullValueInput)
{
editorElement.TextChanged -= this.EditorElement_TextChanged;
editorElement.TextChanged += this.EditorElement_TextChanged;
}
}
}
private void EditorElement_TextChanged(object sender, EventArgs e)
{
if (sender is BaseSpinEditorElement editorElement && string.IsNullOrWhiteSpace(editorElement.Text))
{
editorElement.NullableValue = null;
}
}
When setting SelectedObject a ReadOnlyAttribute applies to the grid. But when wrapping it in an object[] and assign it to SelectedObjects the grid allows editing.
Sample application included.
Hello,
RadPropertyGrid does not properly intersect properties when what is set as SelectedObjects implements the ICustomTypeDescriptor interface. However, the .Net Framework PropertyGrid does not have this problem.
To reproduce the problem, use the attached project.
Steps to reproduce: 1. Set a PasswordPropertyText(true) attribute to a string property of an object. 2. Set the object as selected of a property grid. 3. Open the password property for edit. Any other text property you try to edit will be handled as if it was password.
Currently RadPropertyGrid uses CurrentUICulture for localization, while it should use CurrentCulture.
Steps to reproduce: 1. Create a custom type descriptor for an object that returns less properties than the default one. 2. Set this descriptor to the object 3. Set an object array containing two such objects to the SelectedObjects property of RadPropertyGrid 4. Run the project and you will see all properties of the object are shown disrespecting the custom type descriptor.
Steps to reproduce: 1. Add a RadPropertyGrid to a form. 2. Set the SelectedObjects property to a array of one object that has a property decorated with the ReadOnly attribute. Run the project and you will see that the read only property is not displayed.
How to reproduce: check the attached screenshot Workaround: use the attached custom theme