我有一个具有多个公共属性的usercontrol。这些属性会自动显示在VS2005设计器的属性窗口中的“Misc”类别下。除了枚举中的两个属性没有正确显示。
第一个使用以下枚举:
public enum VerticalControlAlign
{
Center,
Top,
Bottom
}
这根本不会出现在设计师中。
第二个使用此枚举:
public enum AutoSizeMode
{
None,
KeepInControl
}
这个出现了,但设计师似乎认为它是一个布尔,只显示真与假。当您使用控件构建项目时,它会说它无法将类型bool转换为AutoSizeMode。
此外,这些枚举以全局方式声明到命名空间,因此可以随处访问它们。
有什么想法吗?
答案 0 :(得分:2)
我对你的问题进行了一些测试(我不确定我是否正确理解它),这些属性在设计器中正确显示,并且所有枚举都显示得恰当。如果这不是你想要的,那么请进一步解释自己。
不要挂在那里扔的_Ugly部分。我只是用它来进行快速测试。
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;
}
}
答案 1 :(得分:0)
对于初学者,第二个枚举,AutoSizeMode在System.Windows.Forms中声明。这可能会给设计师带来一些问题。
其次,您可能会发现MSDN上的以下页面非常有用:
答案 2 :(得分:0)
要尝试的一些事情(VS2005中的设计师模式,我发现有些不稳定):
batch="false"
添加到您的<compilation>
代码。尝试为您的枚举设置默认值:
public enum VerticalControlAlign
{
Center = 0,
Top = 1,
Bottom = 2
}
答案 3 :(得分:0)
您无需将枚举设为全局,以便在设计器中显示它们。
请澄清: