0
public class MyClass
{
    // Some staff
}

public class MyControl : UserControl
{
    public MyClass MyObj { get; set; }
}

我希望 MyObj 属性能够通过 MS Visual Studio 的属性窗口进行设置。但是它像只读属性一样变灰。

我想我应该添加一些设计师属性,但不知道在哪里和哪个。

编辑

最简单的解决方案是从Component继承MyClass。不需要任何属性。

public class MyClass : Component
4

1 回答 1

3

试试这是否有效

[TypeConverter(typeof(ExpandableObjectConverter))]
public class MyClass
{
    // Some staff
}


public class MyControl : UserControl
{
    [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]     
    public MyClass MyObj { get; set; }
}

用户评论后编辑:
此测试代码按预期工作:

public partial class MyControl : UserControl
{
    public MyControl()
    {
        InitializeComponent();
        MyObj = new MyClass();

    }
    [DesignerSerializationVisibilityAttribute(DesignerSerializationVisibility.Content)]     
    public MyClass MyObj { get; set; }
}


[TypeConverter(typeof(ExpandableObjectConverter))]
public class MyClass
{
    public string Test { get; set; }
}

再次编辑:
如果您希望属性编辑器的行为与您描述的一样,我能给您的最简单的解决方案是

public class MyClass : Control // if it must be visible on form

或者

public class MyClass : Component // if it must be just a component
于 2012-04-10T08:24:31.727 回答