从“字符串”转换为“GSMModemTypeConstants”时Convert.ChangeType的错误

时间:2012-03-29 16:35:41

标签: c# visual-studio enums sms gsm

comboBox2.DataSource = Enum.GetValues(typeof(GSMModemTypeConstants));
GSMModemTypeConstants s_type = (GSMModemTypeConstants)Convert.ChangeType(
    comboBox2.Text, typeof(GSMModemTypeConstants));

在第一行中,用户从comboBox中选择他的调制解调器的类型,该组合框获取Enum GSMModemTypeConstants中可用的调制解调器列表。在第二行中,我想将选定的调制解调器类型传递给s_type,稍后将由实际发送SMS的方法使用。

当我手动设置s_type时,一切都很完美,例如:

GSMModemTypeConstants s_type = GSMModemTypeConstants.gsmModemSonyEricsson;
// OR
GSMModemTypeConstants s_type = GSMModemTypeConstants.gsmModemNokia;

但是当我尝试从comboBox中检索选项并像第二行中那样设置s_type时转换会给我一个我无法理解的错误。

the error

我处理Convert.ChangeType方法错了吗?如果这不是我的错,那么除了Convert.ChangeType之外还有其他方法可以将类型从字符串转换为其他内容吗?


解决方案 我仍然没有在下面回答所需的声誉,所以这里是代码...

GSMModemTypeConstants s_type = (GSMModemTypeConstants)System.Enum.Parse(
    typeof(GSMModemTypeConstants), comboBox2.Text);`

1 个答案:

答案 0 :(得分:1)

如果comboBox2.Text有一个数字(整数),那么您应首先将该值转换为int,然后将其转换为GSMModemTypeConstants,例如:

int modemType = int.Parse(comboBox2.Text));
GSMModemTypeConstants s_type = (GSMModemTypeConstants)modemType;

或者,将comboBox2.SelectedItem转换为您的枚举。