如何将嵌套的设计时属性添加到用户控件?

时间:2013-10-09 21:58:16

标签: c# winforms visual-studio-2010 c#-4.0 properties

我有一个包含许多面板控件的用户控件。用户控件具有根据用户控件中包含的某些变量的值设置每个面板的可见性的逻辑。

我想通过添加以下枚举来增强此功能:

public enum Visibility
{
    Default,
    Always,
    Never
}

其中Default将使用当前逻辑来设置面板的可见性,但Always会(显然)使面板始终可见,Never将始终隐藏面板。

我还想添加一个名为PanelVisiblity的“嵌套”设计时属性,开发人员可以扩展,并查看下面列出的面板名称,并允许他们从{{{ 1}}每个枚举。

如果我添加这样的属性:

Visibility

public partial class MyControl : UserControl { public Visibility ActivePanel { get; set; } public Visibility CodePanel { get; set; } } ActivePanel属性出现在Visual Studio的“属性”窗口中,我可以将它们设置为枚举中的三个值之一。但是,当我重构我的代码以尝试创建这样的嵌套属性时:

CodePanel

我没有得到可扩展的public partial class MyControl : UserControl { public class PanelVisibility { public enum Visibility { Default, Always, Never } public Visibility ActivePanel { get; set; } public Visibility CodePanel { get; set; } } } 属性,我得到一个禁用的PanelVisiblity属性,其中值是类的名称空间,加上'PanelVisibility'。

我用Google搜索了一些用于表示此搜索的变体,但未能找到类似我正在寻找的内容。

任何方向都会受到高度赞赏。

1 个答案:

答案 0 :(得分:0)

您似乎正在寻找与DockPanel提供的功能相同的功能。

我建议你不要重新发明轮子,而应该使用一个可用的实现,例如:

http://msdn.microsoft.com/en-us/library/system.windows.controls.dockpanel.aspx

http://dockpanel2012.codeplex.com/

https://github.com/dockpanelsuite/dockpanelsuite