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

  • newreleaseblitz

    newreleasebl

    13 Ocak 2010
  • snookie77

    snookie77

    2 Mart 2006
  • Subscribe!!

    Subscribe!!

    3 EKİM 2009