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
İ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);
}
Nasıl dize C kullanarak eşleştirmek iç...
nasıl dize dizi değerleri int dönüştür...
Nasıl WPF combobox denetimi için bir n...
Nasıl bir sınıf nesnesi için özel bir ...
Nasıl özel karakterler için bir dize k...