Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取组合框值并优雅地从字符串转换为自定义枚举_C#_Combobox_Enums - Fatal编程技术网

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
}