如何在属性对话框中添加自定义控件属性

时间:2012-09-02 08:27:25

标签: c#

我想将属性添加到我的自定义控件中,如上面带有描述的示例属性! 我不知道如上所述用GUI显示热点。 我想知道使用它的属性。


private bool IsNum = true;
[PropertyTab("IsNumaric")]
[Browsable(true)]
[Description("TextBox only valid for numbers only"), Category("EmSoft")]   
public bool IsNumaricTextBox
{
    set
    {
         IsNum = value;
    }
}

protected override void OnKeyPress(KeyPressEventArgs e)
{
    base.OnKeyPress(e);
    if (IsNum)
    {
        doStruf(e);   
    }
}

private void doStruf(KeyPressEventArgs e)
{
    if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), "\\d+") && !char.IsControl(e.KeyChar))
        e.Handled = true;
}

我想将此显示为带描述的属性工具框

喜欢这个属性框

IsNumaric True

2 个答案:

答案 0 :(得分:1)

该属性需要一个Getter才能显示在属性网格中:

private bool isNum = true;

[PropertyTab("IsNumaric")]
[Browsable(true)]
[Description("TextBox only valid for numbers only"), Category("EmSoft")] 
public bool IsNumaricTextBox {
  get { return isNum; }
  set { isNum = value; }
}

答案 1 :(得分:0)

实现起来相当容易,你只需要用下面的示例中的属性来装饰它:

[PropertyTab("IsNumaric")]
[DisplayName("NumericOrNot")]
[Category("NewCategory")]
public bool IsNumaricTextBox
{
     set
     {
         IsNum = value;
     }
}

要使其正常工作,您需要使用以下内容:

using System.ComponentModel

如果您未指定Category - 属性将显示在Misc类别下(请注意,默认情况下,属性按名称显示,而不是按类别显示)。在此示例中,属性将显示在NewCategory下,属性的名称将为NumericOrNot