SORU
28 NİSAN 2009, Salı


Nasıl özel bir dize ile numaralama bağlı bir combobox numaralandırma değerleri için biçimlendirme var mı?

The post Enum ToString özel kullanım için açıklanan bir yöntem bu gibi DescriptionAttribute öznitelik:

Enum HowNice {
  [Description("Really Nice")]
  ReallyNice,
  [Description("Kinda Nice")]
  SortOfNice,
  [Description("Not Nice At All")]
  NotNice
}

Ve sonra, bir işlev çağrısı GetDescription gibi sözdizimini kullanarak:

GetDescription<HowNice>(NotNice); // Returns "Not Nice At All"

Ama bu gerçekten bana yardımcı olmuyorsadece bir numaralandırma değerleri ile ComboBox doldurmak istiyorum, bir bu yana ComboBox GetDescription çağrı zorlamak.

İstediğim şey, aşağıdaki gereksinimleri vardır:

  • (HowNice)myComboBox.selectedItem okuma numaralandırma değeri olarak seçilen değeri döndürür.
  • Kullanıcı dostu ekran dizeleri, ve sadece numaralandırma değerleri adını görmelisiniz. Yani görerek "NotNice" kullanıcı görecekti "Not Nice At All".
  • Umarım çözüm mevcut listeleme için en az bir kod değişiklikleri gerektirir.

Açıkçası, ben oluşturmak her isimli yeni bir sınıf uygulamak ve her sıralama için ama bu bir sürü iş var ToString(), onun geçersiz olabilir, ve yerine bunu önlemek istiyorum.

Herhangi bir fikir?

Heck, hatta bir lütuf olarak hug veririm :-)

CEVAP
28 NİSAN 2009, Salı


İhtiyacınız ComboBox her şey var: istediğiniz biçimlendirme mantığı yerleştirmeniz gerekir nerede* *14 Format etkinlik için ayarlamalısınız FormattingEnabled özelliği. Böylece

myComboBox.FormattingEnabled = true;
myComboBox.Format  = delegate(object sender, ListControlConvertEventArgs e)
    {
        e.Value = GetDescription<HowNice>((HowNice)e.Value);
    }

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • KliptOut KwazeeKilla

    KliptOut Kwa

    24 ŞUBAT 2010
  • уσ ρℓz sυв ιℓℓ sυв вαcқ

    уσ ρℓz

    14 EKİM 2010
  • Nick Pitera

    Nick Pitera

    8 NİSAN 2006