2009-03-11 9 views
1

Bir formdaki tüm denetimleri yönetmeme yardımcı olan bir özellik kılavuzum var. Bu kontroller tasarımcı tipi insanlar içindir, bu yüzden kullanıcı arayüzü hakkında çok fazla endişe duymuyorum ... birisi birden fazla nesne seçene kadar.Birden çok öğe seçildiğinde nasıl özel dizeleri görüntülerim?

Bu yaygın nesnelerdeki "EffectiveDiameter" özelliği için bir UITypeEditor var. Birimleri (metre vs feet) takip eder ve anında güzel şeyler yapar. Bununla birlikte, birisi iki veya üç ortak nesne seçtiğinde, aynı metin dizesine göre değerlendirilse de EffectiveDiameter boştur. Örneğin, çoğu denetimde Microsoft, "Üst, Sağ" metin çıktısı olan "Çapa" özelliğine sahiptir. Örneğin; Aşağı indirdiğinizde güzel bir UITypeEditor olan bir nesnedir. Yine de, formunuzda aynı Çapa ayarına sahip beş nesne seçtiğinizde, özellik kılavuzunda "Üst, Sağ" dizesini görmeye devam edebilirsiniz.

/// <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; 
     } 
    } 
} 

benim özel nesnelerin çeşitli seçerseniz - hepsi aynı etkin çapı - nasıl Çapa yaptığı gibi EffectiveDiameter PropertyGrid görüntülemek alabilirim? Şu an bu alan her zaman boş.

cevap

1

. Fakat örnekleminizde umConversion sınıfı için bir UITypeEditor gösteriyorsunuz. Yani lütfen açıklığa kavuşturun.

İkinci durumdaysanız, mülkünüz aslında bir ilkel tür değil, kendi sınıfınızdaysa, Eşit yöntemini uyguladığınızdan emin olun. MS PropertyGrid çağrısında MultiPropertyDescriptorGridEntry sınıfı, tüm hedef örneklerin aynı değere sahip olup olmadığını bilmek için eşittir. Sorununuz bu olduğundan emin değilim, ama bunu ortadan kaldırmak için bunu test ederim.

1

Yeri size double türünde effectiveDiameter bahsediyoruz görünüyor anlattıklarına bakılırsa çok her özellikte bir TypeConverter nitelik ..

+0

Sınıfın kendisinde bir TypeConverter var. Ancak, bunun bir hile olmadığını garanti etmek için, çalışıp çalışmadığını görmek için bir öznitelikte bir TypeConverter (dizeye/dizeden dönüştüren) yerleştirdim. Olmadı. = ( – Jerry

+0

Üzgünüz :(Mümkünse ortak bir temel sınıf veya arabirim sağlamayı denediniz mi? Eğer değilse, özellik tanımlayıcılarıyla bir sihreye dönmeniz ve tüm örnekler için aynı örneği (PropertyDescriptor) döndürdüğünüzden emin olmanız gerekebilir. – leppie

İlgili konular