如何使自定义属性显示在属性管理器中

本文关键字:属性 管理器 显示 何使 自定义属性 | 更新日期: 2023-09-27 18:09:17

我正在使用Visual Studio 2015 Community在c#中使用Windows Forms创建一个应用程序。我已经创建了一个自定义控件(实现一个按钮)与公共属性和设置。当我将自定义按钮添加到表单时,如何使这些自定义属性/设置显示在Visual Studio属性管理器中?

我有私有的支持和公共的访问器,就像人们通常做的那样;

多年前我经常这样做,但我已经忘记了如何让它出现在物业管理中。默认情况下,在VS 2015和之前的版本中,属性管理器是通常用来设置标准控件属性的区域,位于IDE的右下方。

下面是我正在使用的一个属性的片段:

public class Spot : Button
{
    // backers for the properties
    private bool isselected = false;
    // //////////////////////////////////////////////////////////////
    // user accessable properties relying on the above backers
    //
    /// <summary>
    /// Get/Set if the spot is selected
    /// </summary>
    public bool isSelected
    {
        get
        {
            return isselected;
        }
        set
        {
            isselected = value;
        }
    }
}

希望这里有人能帮助提醒我怎么做。我确实在这里做了几次搜索,并通过谷歌,但似乎没有地方有我要找的东西。通过我的特定搜索,包括"Property Manager",我得到了许多房地产结果,这些结果与我正在寻找的结果相差甚远。

如何使自定义属性显示在属性管理器中

您需要使用DependencyProperty。从这里开始:

// Dependency Property
public static DependencyProperty CurrentTimeProperty = 
     DependencyProperty.Register( "CurrentTime", typeof(DateTime),
     typeof(MyClockControl), new FrameworkPropertyMetadata(DateTime.Now));
// .NET Property wrapper
public DateTime CurrentTime
{
    get { return (DateTime)GetValue(CurrentTimeProperty); }
    set { SetValue(CurrentTimeProperty, value); }
}

这将给你一个新的属性"CurrentTime"作为一个例子。

你可以这样写:

public static DependencyProperty SelectedProperty = 
     DependencyProperty.Register( "IsSelected", typeof(Boolean),
     typeof(Spot), new FrameworkPropertyMetadata(false));
public Boolean IsSelected
{
    get { return (Boolean)GetValue(SelectedProperty); }
    set { SetValue(SelectedProperty, value); }
}

—编辑,因为它是为WinForms:

试试如下所示:

[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public bool isSelected
{
    get
    {
        return isselected;
    }
    set
    {
        isselected = value;
    }
}