There's no built in support for showing a link in the property editor; in addition to the text, you can show an icon, a custom glyph, a dropdown button or a dots button.
You can also handle the click event of grid entries.
Handling the click might be good enough for you. But if you would like to show a link label in the property grid, the following code shows you a nice hack (read dirty hack ), so that when you click on the property it shows the link label:

private void Form1_Load(object sender, EventArgs e)
{
this.propertyGrid1.SelectedObject = new Test();
//For .NET projects the field is _gridView
//For .NET Framework projects the field is gridView
var gridView = propertyGrid1.GetType()
.GetField("gridView",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance)
.GetValue(propertyGrid1);
var edit = gridView.GetType()
.GetProperty("Edit",
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance)
.GetValue(gridView) as TextBox;
var linkLabel = new LinkLabel()
{
Text = "Click me!",
LinkArea = new LinkArea(0, 9),
Dock = DockStyle.Fill,
AutoSize = false,
Visible = propertyGrid1.SelectedGridItem?.PropertyDescriptor?.Name == "MyProperty"
};
linkLabel.LinkClicked += (obj, args) =>
{
MessageBox.Show("Link clicked");
};
edit.Controls.Add(linkLabel);
propertyGrid1.SelectedGridItemChanged += (obj, args) =>
{
var name = args.NewSelection?.PropertyDescriptor?.Name;
linkLabel.Visible = name == "MyProperty";
};
edit.Enter += (obj, args) =>
{
var name = propertyGrid1.SelectedGridItem?.PropertyDescriptor?.Name;
linkLabel.Visible = name == "MyProperty";
};
}
And this is the test class:
public class Test
{
[ReadOnly(true)]
public string MyProperty { get; set; } = "Click me!";
public string AnotherProperty { get; set; } = "Something else";
}
To use the code, make sure you bind the event handler to the event.