Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否在给定的持续时间内禁用所有窗体按钮?_C# - Fatal编程技术网

C# 是否在给定的持续时间内禁用所有窗体按钮?

C# 是否在给定的持续时间内禁用所有窗体按钮?,c#,C#,我有一个C#格式的表单,它有4个按钮。我想在给定的时间后禁用所有4个按钮,例如在1或2分钟内。我在谷歌搜索并找到了以下代码,但它似乎不起作用: private System.Timers.Timer aTimer = new System.Timers.Timer(60) { AutoReset = false }; protected void Timer2_Tick(object sender, EventArgs e) { aTimer = new System.Timers.T

我有一个C#格式的表单,它有4个按钮。我想在给定的时间后禁用所有4个按钮,例如在1或2分钟内。我在谷歌搜索并找到了以下代码,但它似乎不起作用:

private System.Timers.Timer aTimer = new System.Timers.Timer(60) { AutoReset = false };

protected void Timer2_Tick(object sender, EventArgs e)
{
    aTimer = new System.Timers.Timer(60);
    aTimer.Interval = 60;
    double counter = aTimer.Interval;
    counter++;
    if (counter >= 60)
    {
        lib_bt.Enabled = false;
        MessageBox.Show("Time Up!");
    }

tick方法将在您定义的时间间隔后执行。只需确保将
按钮.Enabled
设置为false

aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);


private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    lib_bt.Enabled = false;
    MessageBox.Show("Time Up!");
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
    button4.Enabled = false;
}
button1
button4
应替换为按钮名称

请注意:

  • 间隔定义为毫秒。您的代码将每60毫秒执行一次。对于1分钟,您应将间隔设置为
    60000
  • aTimer
    定义了两次。为什么?

勾选方法将在您定义的间隔后执行。只需确保将
按钮.Enabled
设置为false

aTimer.Elapsed += new ElapsedEventHandler(OnTimedEvent);


private static void OnTimedEvent(object source, ElapsedEventArgs e)
{
    lib_bt.Enabled = false;
    MessageBox.Show("Time Up!");
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
    button4.Enabled = false;
}
button1
button4
应替换为按钮名称

请注意:

  • 间隔定义为毫秒。您的代码将每60毫秒执行一次。对于1分钟,您应将间隔设置为
    60000
  • aTimer
    定义了两次。为什么?

60秒==60000毫秒。。。。供参考

下面是它的外观:

private static System.Timers.Timer myTimer;

public static void Main()
{
    myTimer = new System.Timers.Timer(60000);  // 60 seconds
    myTimer.Elapsed += new ElapsedEventHandler(DisableButtons); // subscribe
    myTimer.AutoReset = false; // if you don't want a reset
    myTimer.Enabled = true;    // enable it
}

// perform when event is fired off
private static void DisableButtons(object source, ElapsedEventArgs e)
{
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
    button4.Enbaled = false;
}

60秒==60000毫秒。。。。供参考

下面是它的外观:

private static System.Timers.Timer myTimer;

public static void Main()
{
    myTimer = new System.Timers.Timer(60000);  // 60 seconds
    myTimer.Elapsed += new ElapsedEventHandler(DisableButtons); // subscribe
    myTimer.AutoReset = false; // if you don't want a reset
    myTimer.Enabled = true;    // enable it
}

// perform when event is fired off
private static void DisableButtons(object source, ElapsedEventArgs e)
{
    button1.Enabled = false;
    button2.Enabled = false;
    button3.Enabled = false;
    button4.Enbaled = false;
}
我想在给定的时间后禁用所有4个按钮

我认为最简单的方法是使用C#5.0的async/await

只要在代码中的某个地方调用此方法,它就会在n秒后禁用按钮

我想在给定的时间后禁用所有4个按钮

我认为最简单的方法是使用C#5.0的async/await


只要在代码中的某个地方调用此方法,它将在n秒后禁用按钮。

当计时器持续时间达到时,将触发勾号事件。无需检查计时器间隔。只需禁用其中的按钮-这应该是唯一的代码there@L.B根据代码判断,最有可能是WinForms。WPF按钮没有
.Enabled
属性;它是
。我已启用
。事实上,它没有使用
Dispatchermer
。但是,再一次,我认为他并不完全理解他正在使用的代码。我会使用Forms.Timer而不是System.Timers.Timer,这样你就不必调用按钮disable返回UI线程。当计时器持续时间达到时,勾号事件将触发。无需检查计时器间隔。只需禁用其中的按钮-这应该是唯一的代码there@L.B根据代码判断,最有可能是WinForms。WPF按钮没有
.Enabled
属性;它是
。我已启用
。事实上,它没有使用
Dispatchermer
。但是,再说一遍,我认为他并不完全理解他正在使用的代码。我会使用Forms.Timer而不是System.Timers.Timer,这样你就不必调用按钮disable返回UI线程。@Ahmedilyas:你不需要。一旦您将
Timer.Enabled
属性设置为true,代码将在定义的时间段后执行。对,但为了随后禁用按钮等…将触发一个事件…勾号事件…这就是您的代码的样子now@Ahmedilyas我不是写这篇评论的那个人。@Ahmedilyas:你不需要。一旦您将
Timer.Enabled
属性设置为true,代码将在定义的时间段后执行。对,但为了随后禁用按钮等…将触发一个事件…勾号事件…这就是您的代码的样子now@Ahmedilyas我不是那个写评论的人。