VS2010中的winUserControl - 属性在设计器中不可见

时间:2011-08-16 14:45:19

标签: c# winforms visual-studio-2010 windows-forms-designer

我有一个问题(我想)我的Visual Studio 2010 Express环境:当我设计自己的UserControl时,在属性网格中,我看不到该控件的公共属性。然而,它们在项目中可见,引用此控件 因为它是Express Edition,我创建了一个新的空项目,然后添加新的UserControl 然后,为了测试,我输入以下代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Project1
{
    public partial class UserControl1 : UserControl
    {
        private int myNumber;

        [Browsable(true)]
        public int MyNumber
        {
            get
            {
                return myNumber;
            }
            set
            {
                myNumber = value;
            }
        }


        public UserControl1()
        {
            InitializeComponent();
        }
    }
}  

在VS 2008中,我记得,即使没有[Browsable(true)]属性,也应该在属性网格中显示MyNumber属性。但是在VS 2010中,当我在解决方案资源管理器中双击UserControl1.cs并查看属性时,我看不到MyNumber。
当我在另一个项目中引用和使用此控件时,可以访问它的属性。

我试图竞争重新安装VS 2010环境,包括SP1,但没有成功。你知道什么是错的吗?

顺便说一句:这些属性都不起作用:

[Browsable(true)]
[EditorBrowsable(EditorBrowsableState.Always)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
[Bindable(true)]

最好的问候,
马尔钦

3 个答案:

答案 0 :(得分:8)

我相信这是VS2010的正常行为,并假设它是设计的。在2010年的Ultimate中,它的表现与我相同。当您在表单上放置UserControl1时,您会看到其自定义属性。

我的猜测是因为当你设计控件时,你的控件还没有实例(甚至可能没有被编译)。您正在查看的是UserControl的实例。编译控件然后将其添加到表单时,设计器会创建控件的实例,因此可以查看和操作其属性。

答案 1 :(得分:0)

之前我没有使用过[Browsable]标签。但下面是我在其中一个项目中使用的示例。

[Description("The length used to display the dimensions")]
[Category("Custom")]
public double DisplayLength { get; set; }

我猜你需要添加一个类别。

答案 2 :(得分:0)

由于VS在Designer中处理ascx'es的方式,这不起作用。有关详细信息,请参阅SO上的this excellent answer

如果答案不符合您的预期,您仍然可以按照my blog中的描述将.ascx'es迁移到用户控件库。

如果我有选择权,我会将所有ascx代码重新开始为Custom Web Server Controls