2

プロパティ グリッドのフォント プロパティのような展開可能なプロパティとして、カスタム コントロールに新しいプロパティを追加しました。Windows フォーム アプリケーション プロジェクトでカスタム コントロールを使用した後、プロパティ グリッドのフォント プロパティの "..." ボタンのような省略記号 (...) ボタンが表示されます。(詳しくは下記画像をご覧ください。)

カスタム コントロール プロパティの 1 つ

ここで、新しい展開可能なプロパティの省略記号 (…) ボタンを非表示にします。

展開可能なプロパティ コードは次のとおりです。

[DisplayName("Floors Information")]
[Description("Floors Informationnnnnnnnnnnnnnnn")]
[DefaultProperty("TitleText")]
[DesignerCategory("Component")]
public class FloorsInformation : DockContainerItem
{
    private SimilarFloorsInformation similarFloorsInformation = new SimilarFloorsInformation();

    public FloorsInformation()
    {

    }

    [Category("Data")]
    [DisplayName("Similar Floors Panel")]
    [Description("Similar Floors Panellllllllllllllllllll")]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [Editor(typeof(ItemsCollectionEditor), typeof(UITypeEditor))]
    //[TypeConverter(typeof(ExpandableObjectConverter))]
    //[TypeConverter(typeof(SimilarFloorsInformationTypeConverter))]
    public SimilarFloorsInformation SimilarFloorsInfo
    {
        get
        {
            return similarFloorsInformation;
        }
    }
}

[DisplayName("Similar Floors Information")]
[Description("Similar Floors Informationnnnnnnnnnnnnnnn")]
[DefaultProperty("Text")]
[DesignerCategory("Component")]
[TypeConverter(typeof(SimilarFloorsInformationTypeConverter))]
//[TypeConverter(typeof(ExpandableObjectConverter))]
public class SimilarFloorsInformation : ExpandablePanel
{
    private Color canvasColor = SystemColors.Control;
    private eCollapseDirection collapseDirection = eCollapseDirection.LeftToRight;
    private eDotNetBarStyle colorSchemeStyle = eDotNetBarStyle.StyleManagerControlled;
    private DockStyle dock = DockStyle.Right;
    private eTitleButtonAlignment expandButtonAlignment = eTitleButtonAlignment.Left;
    private bool expanded = false;
    private bool markupUsesStyleAlignment = true;
    private Size size = new Size(30, 177);

    public SimilarFloorsInformation()
    {

    }
}

public class SimilarFloorsInformationTypeConverter : ExpandableObjectConverter//TypeConverter
{
    public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
    {
        if (destinationType == typeof(SimilarFloorsInformation))
        {
            return true;
        }
        return base.CanConvertTo(context, destinationType);
    }

    public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
    {
        if (destinationType == typeof(String) && value is SimilarFloorsInformation)
        {
            SimilarFloorsInformation similarFloorsInformation = (SimilarFloorsInformation)value;
            return similarFloorsInformation.TitleText;
        }
        return base.ConvertTo(context, culture, value, destinationType);
    }

    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(string))
        {
            return true;
        }
        return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
    {
        if (value is string)
        {
            SimilarFloorsInformation similarFloorsInformation = new SimilarFloorsInformation();
            similarFloorsInformation.TitleText = (string)value;
            return similarFloorsInformation;
        }
        return base.ConvertFrom(context, culture, value);
    }
}
4

2 に答える 2

5

次のように、メソッドから派生した独自のクラスを実装し、メソッドをUITypeEditorオーバーライドする必要があります。GetEditStyle

public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context)
{
    return UITypeEditorEditStyle.None;
}

次に使用しますEditorAttribute

[Editor(typeof(YourTypeEditor), typeof(UITypeEditor))]

更新 1:

良い。私はあなたがすでにEditorAttribute物件を申請していることに今気付きました:

[Editor(typeof(ItemsCollectionEditor), typeof(UITypeEditor))]
public SimilarFloorsInformation SimilarFloorsInfo
{
    get
    {
        return similarFloorsInformation;
    }
}

GetEditStyleしたがって、でオーバーライドする必要がありますItemsCollectionEditor

于 2012-10-10T20:51:38.177 に答える
0

Nikolay Kilの回答に従って問題を解決しました。カスタム コントロールの「 SimilarFloorsInfo 」プロパティに適用した次のコード行 (属性) に対して、省略記号 (...) ボタンが表示されます。

[Editor(typeof(ItemsCollectionEditor), typeof(UITypeEditor))]

したがって、このコード行は削除するか、コメント化する必要があります。現在、プロパティ グリッドでプロパティの省略記号 (...) ボタンが表示されていません。

于 2012-10-12T11:22:51.050 に答える