我有1个这样的“car_brands”枚举声明:
public enum Car_brands
{
Audi = 1,
...
...
}
以及许多其他枚举每个“car_brand”的声明,如此
public enum Audi
{
model_a3 = 1,
model_a4 = 2,
...
}
我有2个组合框。与car_brands相关的一个:
comboBox1.DataSource = new BindingSource(Car_brands.Keys, null);
我希望其他组合框填充选择品牌的枚举(例如奥迪的奥迪Enum车型)。
我试试这个但看起来并不准确......
private void comboBox3_SelectedValueChanged(object sender, EventArgs e)
{
string value = comboBox1.Text; //car brand
Type type = Type.GetType(value);
var brand_models = Enum.GetNames(type.GetType());
foreach (string enumValue in brand_models)
{
string brand_model = enumValue;
MessageBox.Show(brand_model);
}
}
答案 0 :(得分:3)
Type type = Type.GetType("full namespace where you declare enum" + "." + value);
var brand_models = Enum.GetNames(type);
如果是嵌套类型,则需要使用"+"
而不是"."
答案 1 :(得分:1)
我可以想出很多更好的方法来解决你的任务,但这应该适合你选择的情况:
private void comboBox3_SelectedValueChanged(object sender, EventArgs e)
{
string value = comboBox1.Text; //car brand
Type type = Type.GetType("YOUR_NAMESPACE." + value);
var brand_models = Enum.GetNames(type);
foreach (string enumValue in brand_models)
{
string brand_model = enumValue;
MessageBox.Show(brand_model);
}
}
请阅读Type.GetType
文档(to be found here),以获得针对特定类层次结构和装配情况的正确解决方案。