0
public class MyClass
{
    // Some staff
}

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

MS Visual Studio のプロパティ ウィンドウから MyObj プロパティを設定できるようにしたいです。ただし、読み取り専用プロパティのようにグレー表示されます。

いくつかのデザイナー属性を追加する必要があると思いますが、どこでどれがどれかわかりません。

編集

最も簡単な解決策は、 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 に答える