【问题标题】:Error of Convert.ChangeType in conversion from "string" to "GSMModemTypeConstants"从“字符串”到“GSMModemTypeConstants”的转换中的 Convert.ChangeType 错误
【发布时间】:2012-03-29 16:35:41
【问题描述】:
comboBox2.DataSource = Enum.GetValues(typeof(GSMModemTypeConstants));
GSMModemTypeConstants s_type = (GSMModemTypeConstants)Convert.ChangeType(
    comboBox2.Text, typeof(GSMModemTypeConstants));

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

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

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

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

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


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

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

【问题讨论】:

  • "Enum.ToObject()" 而不是 "Convert.ChangeType" 在我得到错误的行?
  • 如果您对自己的问题有解决方案,请将其作为答案,以便将来的人们更快地找到答案。做出任何回答都没有代表限制。请避免在标题中使用 [已解决]。

标签: c# visual-studio enums sms gsm


【解决方案1】:

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

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

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

【讨论】:

  • 它实际上是一个字符串,枚举包含包含调制解调器型号的列表。我刚刚找到了我的问题的解决方案,它是由 Enum.Parse 解决的。还是谢谢你的回答!
猜你喜欢
  • 2014-01-17
  • 1970-01-01
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多