自定义控件 - 属性框中的可单击链接

时间:2016-08-18 18:09:25

标签: c# winforms custom-controls windows-forms-designer

我正在使用C#进行自定义控件,我需要添加一个指向属性框的链接(因此我可以在单击后显示一个表单)。

以下是一个例子:

enter image description here

1 个答案:

答案 0 :(得分:3)

您正在寻找DesignerVerb

  

设计器谓词是链接到事件处理程序的菜单命令。设计师   动词在设计时添加到组件的快捷菜单中。在   Visual Studio,每个设计者动词也使用LinkLabel列出,   在“属性”窗口的“描述”窗格中。

您可以使用动词设置单个属性的值,多个属性,或者仅显示一个关于框的内容。

示例:

为您的控件或从ControlDesigner类或ComponentDesigner(对于组件)派生的组件创建一个设计器覆盖Verbs属性并返回一组动词。

请勿忘记添加对System.Design.dll的引用。

using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
[Designer(typeof(MyControlDesigner))]
public class MyControl : Control
{
    public string SomeProperty { get; set; }
}
public class MyControlDesigner : ControlDesigner
{
    private void SomeMethod(object sender, EventArgs e)
    {
        MessageBox.Show("Some Message!"); 
    }
    private void SomeOtherMethod(object sender, EventArgs e)
    {
        var p = TypeDescriptor.GetProperties(this.Control)["SomeProperty"];
        p.SetValue(this.Control, "some value"); /*You can show a form and get value*/
    }
    DesignerVerbCollection verbs;
    public override System.ComponentModel.Design.DesignerVerbCollection Verbs
    {
        get
        {
            if (verbs == null)
            {
                verbs = new DesignerVerbCollection();
                verbs.Add(new DesignerVerb("Do something!", SomeMethod));
                verbs.Add(new DesignerVerb("Do something else!", SomeOtherMethod));
            }
            return verbs;
        }
    }
}