从分钟转换为毫秒,然后转换为 Int

我正在尝试运行以下转换,这会导致无效的强制转换异常

指定的演员表无效

settings.ActionTimer = Convert.ToInt32(TimeSpan.FromMinutes((double)ActionTimerComboBox.SelectedValue).TotalMilliseconds);

这是什么尝试如下:

  1. 取 的值ActionTimerComboBox.SelectedValue,在本例中为“13”并将其从 object 转换为 double,以便 TimeSpan.FromMinutes() 可以应用于它。

  2. 将“13 分钟”转换为毫秒。

  3. 将 int 更新settings.ActionTimer为毫秒转换值,应为“780000”。

我怎样才能做到这一点?


手掌心
浏览 258回答 3
3回答

犯罪嫌疑人X

除了从转换ActionTimerComboBox.SelectedValue为双倍之外,一切看起来都很好。这也是错误信息所说的。您必须使用以下内容:string comboSelectedValue = ActionTimerComboBox.SelectedValue;double selectedVal =0.0;if(double.TryParse(comboSelectedValue, out selectedVal)){    settings.ActionTimer = (int)TimeSpan.FromMinutes(selectedVal).TotalMilliseconds;    Console.WriteLine(TimeSpan.FromMinutes(selectedVal).TotalMilliseconds);}else{    Console.WriteLine("Error in conversion");}工作示例在这里。此链接可能会帮助您了解有关类型转换的更多信息。

杨__羊羊

ActionTimerComboBox.SelectedValue 正在返回字符串,您不能将其转换为 double,您应该尝试使用 double.Parse()、double.TryParse() 或 Convert 类,就像您在此处使用的那样。- 抱歉无法发表评论

慕哥6287543

此异常来自以下声明:((double)ActionTimerComboBox.SelectedValue)对象到双精度转换抛出无效的强制转换异常。要么先将此对象转换为字符串,然后再将其转换为双精度。((double)ActionTimerComboBox.SelectedValue.toString());或者,您也可以使用以下代码:var val = ActionTimerComboBox.SelectedValue;if (val is IConvertible){ double d = ((IConvertible)val).ToDouble(null);}
打开App,查看更多内容
随时随地看视频慕课网APP