【问题标题】:Use label value as the value for timer interval使用标签值作为计时器间隔的值
【发布时间】:2015-07-01 07:38:37
【问题描述】:

在 Visual Basic .net 中是否可以使用 label1.text 作为 timer1.interval 的值?

我尝试了以下方法,不幸的是它不起作用。

Dim Try_Interval As Integer = My.Settings.Error_Millisec
Int32.TryParse(frmSettings.Lbl_Error_Millisec_Fin.Text, Try_Interval)

它说

System.Windows.Forms.dll 中出现“System.ArgumentOutOfRangeException”类型的未处理异常

附加信息:值“0”不是间隔的有效值。 间隔必须大于 0。

我也尝试将其存储在 my.settings 中,如下面的代码所示

Dim Try_Max As Integer = Convert.ToDouble(My.Settings.Error_Try)
Dim Try_Interval As Integer = My.Settings.Error_Millisec

有什么建议吗?

【问题讨论】:

  • Int32.TryParse在可以解析字符串为Int32成功时初始化int参数,否则为0。所以根本问题是无法解析字符串。它的价值是什么?
  • frmSettings.Lbl_Error_Millisec_Fin.Text 的值是 100,请注意我是从另一个表单中获取的。
  • 所以首先你评论它是 0,然后 - 在我发布答案之后 - 你删除那个评论并说它是 100?现在是什么情况?问题解决了吗?
  • 对不起,我把 100 打错为 0,我不是故意的。是的,它仍然无法正常工作,先生。
  • 奇怪,因为错误消息确实表明它是 0,当值是 " 100"(尾随空格)导致Int.TryParse返回0。然后使用frmSettings.Lbl_Error_Millisec_Fin.Text.Trim()

标签: vb.net timer label intervals


【解决方案1】:

Int32.TryParse在可以解析字符串为Int32成功时初始化int参数,否则为0。所以要么是格式无效,要么是"0",无法解析字符串。它有什么价值?

frmSettings.Lbl_Error_Millisec_Fin.Text 的值为 0,注意 我是从另一种形式中获取的。

Timer.Interval Property:

一个 Int32 指定 Tick 事件之前的毫秒数 相对于最后一次发生的 Tick 事件引发。价值 不能小于一

所以指定一个值为>= 1

【讨论】:

  • 我做了一个带有计时器和文本框的简单项目。单击按钮时,它将触发此代码Dim interval_1 As Integer Int32.TryParse(TextBox3.Text, interval_1) TextBox3.Text = interval_1,不幸的是结果为0。先生有什么建议吗?
  • 完成先生,是的。您的建议是正确的,问题出在我的其他代码中。非常感谢。
【解决方案2】:

可以得到区间设置如下:

    Dim timerValue As Integer
    Integer.TryParse(timerLabel.Text, timerValue)
    Timer1.Interval = timerValue

【讨论】:

    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2017-05-08
    • 2020-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多