যদিও এনামের ভিত্তি হিসাবে একটি char
বা একটি ব্যবহার করা সত্যিই সম্ভব নয় string
, তবে আমি মনে করি এটি আপনি যা করতে চান তা ঠিক নয়।
আপনি যেমন উল্লেখ করেছেন যে আপনি সম্ভাবনার একটি এনাম পেতে চান এবং একটি কম্বো বাক্সের মধ্যে এর স্ট্রিং উপস্থাপনা প্রদর্শন করতে চান। যদি ব্যবহারকারী এই স্ট্রিং উপস্থাপনাগুলির মধ্যে একটি নির্বাচন করে তবে আপনি সংশ্লিষ্ট এনামটি পেতে চাইবেন। এবং এটি সম্ভব:
প্রথমে আমাদের কিছু স্ট্রিং একটি এনাম মানের সাথে যুক্ত করতে হবে। এটি এখানে বা এখানেDescriptionAttribute
বর্ণিত মত ব্যবহার করেই করা যেতে পারে ।
এখন আপনাকে এনাম মানগুলি এবং সম্পর্কিত বর্ণনার তালিকা তৈরি করতে হবে। নিম্নলিখিত পদ্ধতি ব্যবহার করে এটি করা যেতে পারে:
public static IList<KeyValuePair<T, string>> ToList<T>() where T : struct
{
var type = typeof(T);
if (!type.IsEnum)
{
throw new ArgumentException("T must be an enum");
}
return (IList<KeyValuePair<T, string>>)
Enum.GetValues(type)
.OfType<T>()
.Select(e =>
{
var asEnum = (Enum)Convert.ChangeType(e, typeof(Enum));
return new KeyValuePair<T, string>(e, asEnum.Description());
})
.ToArray();
}
এখন আপনার কাছে সমস্ত এনামের মূল মান জোড়া এবং তাদের বিবরণ রয়েছে। সুতরাং আসুন সহজভাবে এটি একটি কম্বো বাক্সের জন্য ডেটা উত্স হিসাবে নির্ধারণ করুন।
var comboBox = new ComboBox();
comboBox.ValueMember = "Key"
comboBox.DisplayMember = "Value";
comboBox.DataSource = EnumUtilities.ToList<Separator>();
comboBox.SelectedIndexChanged += (sender, e) =>
{
var selectedEnum = (Separator)comboBox.SelectedValue;
MessageBox.Show(selectedEnum.ToString());
}
ব্যবহারকারী এনামের সমস্ত স্ট্রিং উপস্থাপনা দেখে এবং আপনার কোডের মধ্যে আপনি পছন্দসই এনাম মান পাবেন।