C# Enum类型的UserControl属性在设计器中显示为bool或根本不显示
我有一个usercontrol,它有几个公共属性。这些属性自动显示在VS2005设计器的“属性”窗口中的“杂项”类别下。除了两个属于枚举的属性没有正确显示之外 上的第一个使用以下枚举:C# Enum类型的UserControl属性在设计器中显示为bool或根本不显示,c#,visual-studio,enums,user-controls,C#,Visual Studio,Enums,User Controls,我有一个usercontrol,它有几个公共属性。这些属性自动显示在VS2005设计器的“属性”窗口中的“杂项”类别下。除了两个属于枚举的属性没有正确显示之外 上的第一个使用以下枚举: public enum VerticalControlAlign { Center, Top, Bottom } 这在设计器中根本没有显示 第二个使用此枚举: public enum AutoSizeMode { None, KeepInControl } 这一个出现了
public enum VerticalControlAlign
{
Center,
Top,
Bottom
}
这在设计器中根本没有显示
第二个使用此枚举:
public enum AutoSizeMode
{
None,
KeepInControl
}
这一个出现了,但设计师似乎认为这是一个布尔,只显示真实和错误。当您使用控件构建项目时,它会说它无法将类型bool转换为AutoSizeMode
此外,这些枚举被全局地声明到名称空间,因此它们在任何地方都可以访问
有什么想法吗?对于初学者,第二个枚举AutoSizeMode在System.Windows.Forms中声明。这可能会给设计师带来一些问题 其次,您可能会发现MSDN上的以下页面很有用: 有些东西需要尝试(我发现VS2005中的设计师模式有些古怪):
batch=“false”
添加到
标记中public enum VerticalControlAlign
{
Center = 0,
Top = 1,
Bottom = 2
}
为了使枚举在设计器中可见,无需将其设为全局枚举 请澄清:
我对您的问题做了一个小测试(我不确定是否理解正确),这些属性正确地显示在设计器中,并且所有枚举都正确地显示。如果这不是你想要的,那么请进一步解释你自己 不要挂断扔进去的丑陋部分。我只是用它做了个快速测试
using System.ComponentModel;
using System.Windows.Forms;
namespace SampleApplication
{
public partial class CustomUserControl : UserControl
{
public CustomUserControl()
{
InitializeComponent();
}
/// <summary>
/// We're hiding AutoSizeMode in UserControl here.
/// </summary>
public new enum AutoSizeMode { None, KeepInControl }
public enum VerticalControlAlign { Center, Top, Bottom }
/// <summary>
/// Note that you cannot have a property
/// called VerticalControlAlign if it is
/// already defined in the scope.
/// </summary>
[DisplayName("VerticalControlAlign")]
[Category("stackoverflow.com")]
[Description("Sets the vertical control align")]
public VerticalControlAlign VerticalControlAlign_Ugly
{
get { return m_align; }
set { m_align = value; }
}
private VerticalControlAlign m_align;
/// <summary>
/// Note that you cannot have a property
/// called AutoSizeMode if it is
/// already defined in the scope.
/// </summary>
[DisplayName("AutoSizeMode")]
[Category("stackoverflow.com")]
[Description("Sets the auto size mode")]
public AutoSizeMode AutoSizeMode_Ugly
{
get { return m_autoSize; }
set { m_autoSize = value; }
}
private AutoSizeMode m_autoSize;
}
}
使用System.ComponentModel;
使用System.Windows.Forms;
命名空间示例应用程序
{
公共部分类CustomUserControl:UserControl
{
公共CustomUserControl()
{
初始化组件();
}
///
///我们将AutoSizeMode隐藏在UserControl中。
///
公共新枚举自动共享模式{None,KeepInControl}
公共枚举垂直控制对齐{中心、顶部、底部}
///
///请注意,您不能拥有属性
///如果是,则称为VerticalControlAlign
///已在范围中定义。
///
[DisplayName(“VerticalControlAlign”)]
[类别(“stackoverflow.com”)]
[说明(“设置垂直控制对齐”)]
公共垂直控制对齐垂直控制对齐\u
{
获取{return m_align;}
设置{m_align=value;}
}
专用垂直控制对齐m_对齐;
///
///请注意,您不能拥有属性
///如果是,则称为AutoSizeMode
///已在范围中定义。
///
[DisplayName(“AutoSizeMode”)]
[类别(“stackoverflow.com”)]
[说明(“设置自动大小模式”)]
公共AutoSizeMode AutoSizeMode_
{
获取{return m_autoSize;}
设置{m_autoSize=value;}
}
私有AutoSizeMode m_autoSize;
}
}
这是WinForms而不是WebForms我遇到了第一个示例中的问题-我的枚举根本不显示。这个答案甚至没有试图解决这个问题。