1

我希望 DispatcherTimer 从文本框中读取时间值:objTextBox。我尝试了这段代码,但似乎 TimeSpan 与字符串不兼容,或者我做错了什么?

错误:参数 1:无法从“字符串”转换为“长”

还; 时间是否必须在文本框中看起来像这样:0、0、1 或 00:00:01?

代码在这里:

    private void testing()
    {
        string theText = objTextBox.Text;
        DispatcherTimer dispatcherTimer = new DispatcherTimer();
        dispatcherTimer.Tick += new EventHandler(listjob3_Tick);
        dispatcherTimer.Interval = new TimeSpan(theText);
        dispatcherTimer.Start();
    }
4

4 回答 4

1

要从 a 转换为TimeSpanastring您可以利用TimeSpan.Parse,但您必须符合以下格式[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

ws    is Optional white space.
-     is An optional minus sign, which indicates a negative TimeSpan. 
d     is Days, ranging from 0 to 10675199.
.     is A culture-sensitive symbol that separates days from hours. The invariant format uses a period (".") character.
hh    is Hours, ranging from 0 to 23. 
:     is The culture-sensitive time separator symbol. The invariant format uses a colon (":") character.
mm    is Minutes, ranging from 0 to 59. 
ss    is Optional seconds, ranging from 0 to 59. 
.     is A culture-sensitive symbol that separates seconds from fractions of a second. The invariant format uses a period (".") character.
ff    is Optional fractional seconds, consisting of one to seven decimal digits. 

因此,只需转换天数,您实际上就可以使用TimeSpan.Parse并传入字符串 - 但如果您想转换分钟数,则需要对输入进行一些按摩,如下所示:

var input = string.Format("00:{0}", objTextBox.Text.PadLeft(2, '0'));

所以你可以发出var timeSpan = TimeSpan.Parse(input);,因为你已经正确格式化它并且Parse会成功。我猜另一种选择是将分钟变成几天,但这需要一些浮点工作,而且实际上,IMO 并不是一个好的选择。

于 2013-04-15T18:26:10.420 回答
1

要将字符串转换为 TimeSpan,请使用TimeSpan.Parse(str)

于 2013-04-15T18:19:09.623 回答
1

我猜你的例外在这里:

dispatcherTimer.Interval = new TimeSpan(theText);

改用这个:

dispatcherTimer.Interval = new TimeSpan(Convert.ToInt64(theText));
于 2013-04-15T18:23:59.773 回答
0

@Sneakybastardd:您是否阅读过有关构造函数重载的TimeSpan文档?您会注意到它们都没有使用字符串参数:整数类型是必需的。

阅读文档后,您可能会发现这些TimeSpan方法很有用:

  • Parse()
  • ParseExact()
  • TryParse()

关于格式,请参阅“标准 TimeSpan 格式字符串”“自定义 TimeSpan 格式字符串”。如果需要的话,还要对不同文化的各种默认 TimeSpan 格式进行一些研究。

于 2013-04-15T18:24:49.117 回答