How to give PropertyGrid Label more width than the Editor

Environment

Product ProgressĀ® TelerikĀ® UI for WinForms

Description

An example showing how to give the PropertyGrid's Label column more width to show longer property names. By default, the PropertyGrid will use equal spacing for both sides, which may trim the end of a long property name.

Solution

The RadPropertyGrid has a BestFit method that, by default, provides equal spacing to both the Label and the Value columns. The BestFit method has one overload that takes a PropertyGridBestFitMode parameter that allows you to choose a side to best fit; MaximizeLabelColumnVisibility and MaximizeValueColumnVisibility.

The example below has boolean properties with long property names, these names will be trimmed if the PropertyGrid's Label & Value columns are equally spaced. Since the editor control for a bool (CheckBox) requires very little width, you may want the Label side to be wider.

Let's use the following example UserOptions model for the RadPropertyGrid's SelectedObject property:

public class UserOptions
{
    public bool CanUserTurnOnTheThingInTheCorner { get; set; }
    public bool NotifyUserWhenThingInCornerIsTurnedOnOrOff { get; set; }
}
Public Class UserOptions
    Public Property CanUserTurnOnTheThingInTheCorner As Boolean
    Public Property NotifyUserWhenThingInCornerIsTurnedOnOrOff As Boolean
End Class

In the form's Load event handler, assign the SelectedObject to an instance of UserOptions and execute BestFit with PropertyGridBestFitMode.MaximizeLabelColumnVisibility as the parameter value.

public partial class RadForm1 : Telerik.WinControls.UI.RadForm
{
    public RadForm1()
    {
        InitializeComponent();
        Load += RadForm1_Load;
    }

    private void RadForm1_Load(object sender, EventArgs e)
    {
        radPropertyGrid1.SelectedObject = new UserOptions();
        radPropertyGrid1.BestFit(PropertyGridBestFitMode.MaximizeLabelColumnVisibility);
    }
}
Public Partial Class RadForm1
    Inherits Telerik.WinControls.UI.RadForm

    Public Sub New()
        InitializeComponent()
        Load += AddressOf RadForm1_Load
    End Sub

    Private Sub RadForm1_Load(ByVal sender As Object, ByVal e As EventArgs)
        radPropertyGrid1.SelectedObject = New UserOptions()
        radPropertyGrid1.BestFit(PropertyGridBestFitMode.MaximizeLabelColumnVisibility)
    End Sub
End Class

Result

dataentry-customize-editor-controls-layout 001

See Also

Is this article helpful? Yes / No
Thank you for your feedback!

Give article feedback

Tell us how we can improve this article

close
Dummy