C# 如何从C中的文本框定义计时器间隔#

C# 如何从C中的文本框定义计时器间隔#,c#,C#,我正在学习C#,我正在编写一个简单的自动打字机,我正在尝试让它让用户可以设置自己的时间间隔。我尝试使用: timer1.Interval = textbox1.Text; 但这似乎不起作用。我把代码放在一个按钮里。。我怎样才能让它工作?为什么不起作用呢?试试这个: Timer timer1 = new Timer(); timer1.Interval = int.Parse(textbox1.Text); 但请记住,用户必须输入一个数字,因此您可能需要处理用户输入错误数据的情况 编辑: 您可

我正在学习C#,我正在编写一个简单的自动打字机,我正在尝试让它让用户可以设置自己的时间间隔。我尝试使用:

timer1.Interval = textbox1.Text;
但这似乎不起作用。我把代码放在一个按钮里。。我怎样才能让它工作?为什么不起作用呢?

试试这个:

Timer timer1 = new Timer();
timer1.Interval = int.Parse(textbox1.Text);
但请记住,用户必须输入一个数字,因此您可能需要处理用户输入错误数据的情况

编辑: 您可以使用
TryParse
确保它是一个数字:

int myInt = 0;
Timer timer1 = new Timer();
bool parsed = int.TryParse(textbox1.Text,out myInt);

if (parsed)
{
    timer1.Interval = myInt;
}
试试这个:

Timer timer1 = new Timer();
timer1.Interval = int.Parse(textbox1.Text);
但请记住,用户必须输入一个数字,因此您可能需要处理用户输入错误数据的情况

编辑: 您可以使用
TryParse
确保它是一个数字:

int myInt = 0;
Timer timer1 = new Timer();
bool parsed = int.TryParse(textbox1.Text,out myInt);

if (parsed)
{
    timer1.Interval = myInt;
}

您可以使用以下内容:

int value;

// if it is really a value
if (int.TryParse(textbox1.Text, out value))
{
    // if the value is not negativ (or you can enter the lower boundary here)
    if (value > 0)
    {
        timer1.Interval = value;
    }
}
正如Steve在评论中提到的,您需要将回调函数连接到
timer1.appeased
事件(注意:事件的名称因您使用的计时器而异。它也可能是timer1.Tick)。您可以使用以下代码执行此操作:

timer1.Elapsed += TimerElapsedCB;
您需要定义回调函数本身:

private void TimerElapsedCB(object sender, ElapsedEventArgs e)
{
    // Do something here ;-)
    // (e.g. access the signal time by using e.SignalTime)
}

您可以使用以下内容:

int value;

// if it is really a value
if (int.TryParse(textbox1.Text, out value))
{
    // if the value is not negativ (or you can enter the lower boundary here)
    if (value > 0)
    {
        timer1.Interval = value;
    }
}
正如Steve在评论中提到的,您需要将回调函数连接到
timer1.appeased
事件(注意:事件的名称因您使用的计时器而异。它也可能是timer1.Tick)。您可以使用以下代码执行此操作:

timer1.Elapsed += TimerElapsedCB;
您需要定义回调函数本身:

private void TimerElapsedCB(object sender, ElapsedEventArgs e)
{
    // Do something here ;-)
    // (e.g. access the signal time by using e.SignalTime)
}


Text是字符串值,Interval需要int值。您需要将字符串转换为int。既然您只需要数字,为什么不使用NumericUpDown控件而不是文本框呢?您的问题很模糊。主要错误是将字符串(文本属性)赋值给整数属性(int Interval),在C#中,这是不允许的。但在这里说不起作用并没有多大帮助。您是否为Timer.Tick事件设置了事件处理程序。是否检查定时器分辨率的值是否不低?如果有一个答案可以回答您的问题,那么将其标记为已接受是礼貌的:)Text是一个字符串值,Interval需要一个int值。您需要将字符串转换为int。既然您只需要数字,为什么不使用NumericUpDown控件而不是文本框呢?您的问题很模糊。主要错误是将字符串(文本属性)赋值给整数属性(int Interval),在C#中,这是不允许的。但在这里说不起作用并没有多大帮助。您是否为Timer.Tick事件设置了事件处理程序。是否检查定时器分辨率的值是否不低?如果有一个答案可以回答您的问题,将其标记为已接受是礼貌的:)如果用户键入字母而不是数字,会发生什么情况?+1尽管注意-最好使用NumericUpDown,或者至少使用TryParse检查数字是否有效。还考虑检查数字是否大于NealStudiPARSE,条件是OUT ValueSurry,但是您应该显示正确的方式来做这件事,而不是给出一个简单的警告。即TryParse(或NumericUpDown)。顺便说一句,计时器可能已经在设计器中定义好了,所以不需要再创建一个。@Steve我将它添加到了答案中如果用户键入字母而不是数字会发生什么?+1尽管注意-最好使用NumericUpDown,或者至少使用TryParse检查数字是否有效。还考虑检查数字是否大于NealStudiPARSE,条件是OUT ValueSurry,但是您应该显示正确的方式来做这件事,而不是给出一个简单的警告。即TryParse(或NumericUpDown)。顺便说一句,计时器可能已经在设计器中定义好了,所以不需要再创建一个。@Steve我将它添加到了回答中。考虑到限制因素,我认为这是最好的解决方案,但我会问原始海报,他是否为计时器计时设置了事件处理程序。这一点非常模糊。(请注意,Interval的值是毫秒,所以这里可能需要一个下限。)哎哟,现在我们有问题要了解他使用的是哪种计时器。关于计时器的问题总是一团糟,我把解决办法留给你……:-)考虑到这些限制,我认为这是最好的解决方案,但我想问一下原始海报,他是否为计时器滴答不响设置了事件处理程序,这是非常模糊的。(请注意,Interval的值是毫秒,所以这里可能需要一个下限。)哎哟,现在我们有问题要了解他使用的是哪种计时器。关于计时器的问题总是一团糟,我把解决办法留给你……:-)