C# 如何根据用户选择设置计时器?

C# 如何根据用户选择设置计时器?,c#,C#,我正在做一个小程序,一切正常。但是,我不想使用硬编码的计时器,而是想将计时器间隔从列表框或数值下拉框,组合框或类似行的形式更改 因此,我希望能够在表单上用1000-10000毫秒的时间从一个小菜单中更改它,而不是像现在这样硬编码3000MS 问题是,我不知道如何告诉计时器使用可选框中指定的间隔 可能吗 谢谢。您可以在您的组合框中的更改事件中将a的间隔设置为您喜欢的值 private void ComboBox1_SelectedIndexChanged(object sender, System

我正在做一个小程序,一切正常。但是,我不想使用硬编码的
计时器
,而是想将
计时器
间隔
列表框
数值下拉框
组合框
或类似行的形式更改

因此,我希望能够在
表单上用1000-10000毫秒的时间从一个小菜单中更改它,而不是像现在这样硬编码3000MS

问题是,我不知道如何告诉
计时器使用可选框中指定的间隔

可能吗


谢谢。

您可以在您的
组合框中的更改事件中将a的
间隔设置为您喜欢的值

private void ComboBox1_SelectedIndexChanged(object sender, System.EventArgs e)
{
   ComboBox comboBox = (ComboBox) sender;
   aTimer.Interval = double.Parse(ComboBox1.SelectedValue);
}
如果无法确保设置间隔的数据有效,则应使用。如果该值是从
组合框中获取的,并且是只读的,则不需要
TryParse

,您可以尝试:

myTimer.Interval  = (int) myTextbox.Text;

如果希望在每次更改文本框值时触发该事件,则可以将其放入textchanged事件中。

如果要使用允许非数字输入(如
文本框)的控件,请确保验证输入实际上是一个数字。首先捕获错误比以后处理异常要好

private void SetIntervalButton_Click(object sender, EventArgs e)
{
    int interval = 0;
    bool success = Int32.TryParse(intervalTextBox.Text, out interval);

    if(success)
    {
        operationTimer.Interval = interval;
    }
}
如果使用的是
NumericUpDown
控件,则可以省略上面的检查,因为它只允许数值

private void SetIntervalButton_Click(object sender, EventArgs e)
{
    operationTimer.Interval = (int) numericUpDown1.Value;
}

如果值是从combo获取的,并且它只准备就绪,那么就不需要TryParse,我已经添加了您的建议。我建议使用一个线程作为计时器函数(sleep as interval),应该更容易管理。但是如上所述,如果最终用户输入
字符串
,会发生什么?在本例中,您将得到一个
InvalidCastException