Property editor displays a dialog

12 posts, 0 answers
  1. FRANCISCO C P RODRIGUES
    FRANCISCO C P RODRIGUES avatar
    9 posts
    Member since:
    May 2010

    Posted 14 Jun 2012 Link to this post

    Hi,

    Is there any way to define a dialog as the editor associated with a property (for example like the one displayed for the Telerik.WinControls.UI.RadTreeView.Nodes by Visual Studio)?

    I have some properties that are way too complex for the user and I would like to display a dialog to help them edit those properties.

    Thanks,

    Francisco
  2. Stefan
    Admin
    Stefan avatar
    2891 posts

    Posted 19 Jun 2012 Link to this post

    Hello Francisco,

    Thank you for writing.

    One possible way to achieve the desired behavior is to add a button to the text box editor and upon click, open the desired form. Attached you can find a sample project demonstrating this. Alternatively, you can create your own editor and use it for the desired functionality. Information regarding custom editors in RadPropertyGrid can be found here: http://www.telerik.com/help/winforms/propertygrid-editors-using-custom-editor.html 

    I hope this helps. Let us know if you have any other questions.
     
    Kind regards,
    Stefan
    the Telerik team
    RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
  3. UI for WinForms is Visual Studio 2017 Ready
  4. FRANCISCO C P RODRIGUES
    FRANCISCO C P RODRIGUES avatar
    9 posts
    Member since:
    May 2010

    Posted 19 Jun 2012 Link to this post

    Stefan,

    Thank you for your answer.

    I think you forgot to attach the sample project; I couldn't find it anywhere.

    I tried a different approach, creating an editor that returns a "RadBrowseEditorElement". My idea was to replace the "CLICK" event of the button and instead of displaying the default control dialog, display a personalized dialog. The problem with this aproach is that I don't known when the "CLICK" event is set internally and, because of that, I could not replace this event with my own.

    I would like this oportunity to make a suggestion: it woul be great if you guys could turn the "RadBrowseEditorElement" in a more generic control so that we can use it to display our own dialogs (for example publishing an event associated with the button so that we can use this event to display the mentioned dialogs).

    Thanks,

    Francisco
  5. Stefan
    Admin
    Stefan avatar
    2891 posts

    Posted 20 Jun 2012 Link to this post

    Hello Francisco,

    Please excuse me for the omission. The file is now attached.

    Thanks to our TPF, creating such a customization is not a hard task. One possible way is demonstrated in the attached project.

    Let me know how this approach works for you.

    All the best,
    Stefan
    the Telerik team
    RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
  6. FRANCISCO C P RODRIGUES
    FRANCISCO C P RODRIGUES avatar
    9 posts
    Member since:
    May 2010

    Posted 22 Jun 2012 Link to this post

    Stefan,

    The suggested  approach is ok but I found a problem. Once the property with the "special textbox editor" is selected, all other properties that use a "text box editor" will also display the "special text box" (see the attached images).

    Can you help me with this?

    Thanks,

    Francisco
  7. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 25 Jun 2012 Link to this post

    Hello Francisco,

    Thank you for writing back.

    This is happening because of the editor caching mechanism in RadPropertyGrid. This mechanism caches editors in order to speed up the editing process. In this case the easier approach appears to be the custom editor. I have modified the example project so the property grid would use a special editor for the complex property and all other properties would be edited with the default one.

    I hope this will be useful. If you have further questions, I would be glad to help.

    Greetings,
    Ivan Petrov
    the Telerik team
    RadControls for WinForms Q2'12 release is now live! Check out what's new or download a free trial >>
  8. Timo
    Timo avatar
    5 posts
    Member since:
    Jan 2012

    Posted 23 Aug 2013 Link to this post

    Hi,

    I created a custom editor based on Ivan's example where user can edit the value in a RichTextBox.
    If dialog returns DialogResult.OK then I assign RichTextBox.Text to the property Value.
    Sometimes the new value is updated but mostly the value isn't changed.

    Do you have an idea what I missed ?

    Thanks in advance!
    Timo
  9. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 28 Aug 2013 Link to this post

    Hi Timo,

    Thank you for writing.

    I have modified the example project from my previous post to replicate the scenario you have described. I was not able to reproduce the issue you have described. I would kindly ask you to review the project and check if there are any differences with yours.

    Looking forward to your reply.

    Regards,
    Ivan Petrov
    Telerik
    TRY TELERIK'S NEWEST PRODUCT - EQATEC APPLICATION ANALYTICS for WINFORMS.
    Learn what features your users use (or don't use) in your application. Know your audience. Target it better. Develop wisely.
    Sign up for Free application insights >>
  10. Timo
    Timo avatar
    5 posts
    Member since:
    Jan 2012

    Posted 29 Aug 2013 Link to this post

    Hi Ivan,

    thanks for your help. It was quite easy, only update to Telerik Controls 2012.3.1211 and my problem disappeared :-)

    Thanks
    Timo
  11. Larry
    Larry avatar
    24 posts
    Member since:
    Mar 2008

    Posted 06 Jun 2014 Link to this post

    I am using your example on a property in the RadPropertyGrid called "Email".  The example works great, but I want to be able to retrieve the email address that is in the property and generate an email.  I have tried to find the value in the element and the textBoxItem of CreateEditorElement, but cannot locate where the value for the property is stored.  I have converted your code to VB and attached it to this message.

    Protected Overrides Function CreateEditorElement() As Telerik.WinControls.RadElement
     
            Dim element As Telerik.WinControls.UI.BaseTextBoxEditorElement = TryCast(MyBase.CreateEditorElement(), Telerik.WinControls.UI.BaseTextBoxEditorElement)
            Dim textBoxItem As Telerik.WinControls.UI.RadTextBoxItem = element.TextBoxItem
     
            If element.Children.Contains(textBoxItem) Then
                Dim button As New Telerik.WinControls.UI.RadButtonElement()
                button.Text = "Open Outlook"
                AddHandler button.Click, AddressOf button_Click
     
                textBoxItem.Alignment = ContentAlignment.MiddleLeft
                element.Children.Remove(textBoxItem)
     
                Telerik.WinControls.Layouts.DockLayoutPanel.SetDock(textBoxItem, Telerik.WinControls.Layouts.Dock.Left)
                Telerik.WinControls.Layouts.DockLayoutPanel.SetDock(button, Telerik.WinControls.Layouts.Dock.Right)
     
                Dim dockLayoutPanel__1 As New Telerik.WinControls.Layouts.DockLayoutPanel()
     
                dockLayoutPanel__1.Children.Add(button)
                dockLayoutPanel__1.Children.Add(textBoxItem)
     
                element.Children.Add(dockLayoutPanel__1)
            End If
     
            Return element
        End Function
  12. Larry
    Larry avatar
    24 posts
    Member since:
    Mar 2008

    Posted 06 Jun 2014 in reply to Larry Link to this post

    Never mind.  I was looking in the wrong place.  I should have been looking in the button_Click event. The following is an example of how to find the value of the property.

    Private Sub button_Click(sender As Object, e As EventArgs)
     
        Dim rtxtboxitem As Telerik.WinControls.UI.RadTextBoxItem = _
            CType(sender, Telerik.WinControls.UI.RadButtonElement).Parent.Children(1)
     
    End Sub
  13. Ivan Petrov
    Admin
    Ivan Petrov avatar
    701 posts

    Posted 11 Jun 2014 Link to this post

    Hello Larry,

    Thank you for writing.

    Although sometimes unavoidable we strive to minimize as much as possible the use of code like Parent.Parent and Children(0).Children(2). This makes the code really unreadable and also makes it more difficult to maintain. Here are several options you have for retrieving the property value from within the button click event handler, depending on the type of the property:
    1. If the property is a string you can directly access it through Me.Value, where Me would be the CustomTextBoxEditor. Me.Value returns a string boxed in an object so you will have to cast it.
    2. Me.TextBoxEditorElement.Text would give you the text displayed in the editor text box.
    3. If the email property is some complex object you can retrieve it like this:
    Dim itemElement As PropertyGridItemElement = TryCast(Me.OwnerElement, PropertyGridItemElement)
    Dim item As PropertyGridItem = TryCast(itemElement.Data, PropertyGridItem)
    Dim mail As Email = TryCast(item.Value, Email)

    I hope this will help. Do not hesitate to contact us with further questions.

    Regards,
    Ivan Petrov
    Telerik
     
    Check out Telerik Analytics, the service which allows developers to discover app usage patterns, analyze user data, log exceptions, solve problems and profile application performance at run time. Watch the videos and start improving your app based on facts, not hunches.
     
Back to Top
UI for WinForms is Visual Studio 2017 Ready