C#获取组合框值并优雅地从字符串转换为自定义枚举
我的问题是,我有一个组合框,里面装满了长度或重量等单位,即英寸、英尺、码。或者盎司,磅,吨。无论如何,我有枚举,例如C#获取组合框值并优雅地从字符串转换为自定义枚举,c#,combobox,enums,C#,Combobox,Enums,我的问题是,我有一个组合框,里面装满了长度或重量等单位,即英寸、英尺、码。或者盎司,磅,吨。无论如何,我有枚举,例如 public enum Torques { /// <remarks/> DyneCentimeters, /// <remarks/> FootPounds, /// <remarks/> InchPounds, /// <remarks/> Kilogram
public enum Torques {
/// <remarks/>
DyneCentimeters,
/// <remarks/>
FootPounds,
/// <remarks/>
InchPounds,
/// <remarks/>
KilogramMeter,
/// <remarks/>
MeterNewtons,
}
我的一些清单相当长,以这种方式完成项目需要一些很长的案例陈述。我知道一定有办法在一行代码中完成这一切
当我尝试为一个选择赋值时,比如combo.selected.Text=“Bit”combo.selected.value=“Computers.Bit”,然后说toUnit=combo.selected.value之类的话,表示它不能从字符串转换。如果确定ComboBox下拉列表中的字符串值与枚举值完全匹配(如您的示例中所示),您可以使用: 如果它们可能不完全匹配,请改用: 适合你的需要
Computers fromUnit;
var succes = Enum.TryParse(compFromUnit.Text, out fromUnit);
if(!succes)
{
// Invalid string value
}
您使用的是WinForms还是WPF?谢谢Grant,我知道必须有一个简单的解决方案,这就是使用这些语言的全部原因。我真的非常感谢您的快速和非常有用的响应。它像一个符咒一样工作:)谢谢您的响应:)
var userSelection = (Computers)Enum.Parse(typeof(Computers), compFromUnit.Text);
Computers userSelection;
if (!Enum.TryParse(compFromUnit.Text, out userSelection))
{
// You've got a value that doesn't exist in the Enum... do something
}
Computers fromUnit;
var succes = Enum.TryParse(compFromUnit.Text, out fromUnit);
if(!succes)
{
// Invalid string value
}