如何让自定义 属性 出现在 属性 管理器中?
How do I get a custom property to appear in the property manager?
我正在使用 Visual Studio 2015 Community 在 C# 中使用 Windows Forms 创建一个应用程序。我创建了一个具有 public 属性和设置的自定义控件(实现一个按钮)。当我将自定义按钮添加到表单时,如何让这些自定义 properties/settings 出现在 Visual Studio 属性 管理器中?
我有私人支持者,他们通常会使用 public 访问器;
很多年前我曾经这样做过,但我忘记了如何让它出现在 属性 管理器中。默认情况下,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;
}
}
}
希望这里有人可以帮助提醒我如何。我确实在这里做了几次搜索,通过 google,但似乎没有地方有我要找的东西。通过包含 "Property Manager" 在内的特定搜索,我得到了很多与我要查找的内容相去甚远的房地产搜索结果。
您需要使用依赖项属性。摘自 here:
// 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:
尝试一下 here:
[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public bool isSelected
{
get
{
return isselected;
}
set
{
isselected = value;
}
}
我正在使用 Visual Studio 2015 Community 在 C# 中使用 Windows Forms 创建一个应用程序。我创建了一个具有 public 属性和设置的自定义控件(实现一个按钮)。当我将自定义按钮添加到表单时,如何让这些自定义 properties/settings 出现在 Visual Studio 属性 管理器中?
我有私人支持者,他们通常会使用 public 访问器;
很多年前我曾经这样做过,但我忘记了如何让它出现在 属性 管理器中。默认情况下,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;
}
}
}
希望这里有人可以帮助提醒我如何。我确实在这里做了几次搜索,通过 google,但似乎没有地方有我要找的东西。通过包含 "Property Manager" 在内的特定搜索,我得到了很多与我要查找的内容相去甚远的房地产搜索结果。
您需要使用依赖项属性。摘自 here:
// 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:
尝试一下 here:
[EditorBrowsable(EditorBrowsableState.Always)]
[Browsable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Bindable(true)]
public bool isSelected
{
get
{
return isselected;
}
set
{
isselected = value;
}
}