フォーム上のすべてのコントロールを管理するためのプロパティグリッドがあります。これらのコントロールはデザイナータイプの人々のためのものです。だから、誰かが複数のオブジェクトを選択するまで、私は本当にそれほどユーザーインターフェイスについて心配していません。複数の項目が選択されているときにカスタム文字列を表示するにはどうすればよいですか?
私はこれらの一般的なオブジェクトの "EffectiveDiameter"プロパティのUITypeEditorを持っています。それは単位(メートル対フィート)を追跡し、オンザフライでいくつかの素晴らしいことをします。しかし、誰かが2つまたは3つの共通オブジェクトを選択した場合、EffectiveDiameterは同じテキスト文字列に評価されても空白になります。
たとえば、ほとんどのコントロールでは、Microsoftには、 "Top、Right"のテキスト出力を持つ "Anchor"プロパティがあります。あなたがそれをプルダウンすると、素晴らしいUITypeEditorを持つオブジェクトになります。しかし、アンカー設定が同じ5つのオブジェクトをフォーム上で選択すると、プロパティグリッドに文字列「Top、Right」が表示されます。
/// <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;
}
}
}
私は私のカスタムオブジェクトのいくつかを選択した場合 - 同じ有効径を持つすべての - どのように私はアンカーが行うようEffectiveDiameterは、PropertyGridの中で表示するのですか?現在、そのフィールドは常に空白です。
私は、クラス自体にTypeConverterを持っています。しかし、それにトリックがないことを保証するために、私は属性にTypeConverter(文字列に/から文字列に変換する)を配置して、それが機能しているかどうかを確認しました。それはしませんでした。 =( – Jerry
申し訳ありませんが、可能であれば、共通の基本クラスまたはインターフェイスを提供してみましたか?そうでない場合は、プロパティ記述子を使用していくつかの魔法に戻し、すべてのインスタンスに対して(PropertyDescriptorの) – leppie