Wie kann ich benutzerdefinierte Strings angezeigt wird, wenn mehrere Elemente ausgewählt werden?

StackOverflow https://stackoverflow.com/questions/634630

  •  10-07-2019
  •  | 
  •  

Frage

Ich habe eine Eigenschaft Raster, das ich alle Steuerelemente in einem Formular verwalten kann. Diese Kontrollen sind für Designer-Art Leute, also bin ich nicht wirklich besorgt, dass viel über die Benutzeroberfläche ... bis jemand wählt mehrere Objekte.

Ich habe eine UITypeEditor für die „EffectiveDiameter“ Eigenschaft auf diesen gemeinsamen Objekte. Es verfolgt Einheiten (Meter vs Fuß) und hat einige nette Dinge on-the-fly. Wenn jedoch jemand zwei oder drei gemeinsame Objekte auswählt, EffectiveDiameter leer ist, auch wenn es auf die gleiche Textzeichenfolge auswertet.

Zum Beispiel, in den meisten Steuerungen, hat Microsoft die „Anchor“ Eigenschaft, die eine Textausgabe von „Top, Right“ hat. Wenn Sie es nach unten ziehen es ist ein Objekt mit einem schönen UITypeEditor. Doch wenn Sie wählen fünf Objekte auf dem Formular, die alle die gleiche Anchor haben Einstellung können Sie immer noch die Zeichenfolge „Oben, Rechts“ im Eigenschaftenraster sehen.

/// <summary>
/// The default containing class for all Unit-Management Conversion classes.
/// </summary>
[
 Serializable,
 EditorAttribute(typeof(umConversionTypeEditor), typeof(UITypeEditor)),
 TypeConverter(typeof(umConversionTypeConverter)),
]
public class umConversion
{
    ...
}


public class umConversionTypeEditor : UITypeEditor
{
    ...
}



// Now, in my designer class, I have ...
private double _effectiveDiameter { get; set; }

[DisplayName("Effective Diameter")]
public virtual umConversion EffectiveDiameter
{
    get
    {
            umConversion ret = new umConversion (_effectiveDiameter);
            ret.MeasureInSI = _si;
            return ret;
        }
        set
        {
           _effectiveDiameter = value.ImperialUnits;
        }
    }
}

Wenn ich einige meiner benutzerdefinierten Objekte auswählen - alle mit dem gleichen effektiven Durchmesser - wie bekomme ich EffectiveDiameter im Property angezeigt werden wie Anker tut? Gerade jetzt, dass Feld ist immer leer.

War es hilfreich?

Lösung

Aus Ihrer Beschreibung scheint es, Sie sprechen über die effectiveDiameter vom Typ double. Aber in Ihrem Proben Sie eine UITypeEditor für die umConversion Klasse zeigen. Also, bitte klären.

Wenn Sie im zweiten Fall sind, wo Ihr Eigentum ist eigentlich eine Klasse des eigenen und nicht ein primitiver Typ, dann stellen die Equals-Methode zu implementieren. Die MultiPropertyDescriptorGridEntry Klasse in den MS Property Anrufen Equals zu wissen, ob alle Ziele Instanzen den gleichen Wert haben. Nicht sicher, ob dies das Problem ist, aber ich würde überprüfen, ob diese Möglichkeit zu beseitigen.

Andere Tipps

Legen Sie ein TypeConverter Attribut für jede Eigenschaft zu ..

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top