如何在计时器停止时禁用其他应用程序中的按钮

时间:2017-05-30 07:18:51

标签: c# button disabled-control

我在编程C#方面有点新意。我想知道我的wpf是否有办法运行,因为我想让它运行。

我正在为桌面应用程序创建计时器。我想要做的是,如果它达到5分钟,编辑按钮将被禁用,剩下的按钮仅用于保存。

例如,当我在桌面上打开微软word应用程序时,我只有5分钟的时间来访问它,如果我达到时间限制,我只能保存它,其他按钮将被禁用。

这是我的代码片段。

//-----------------------------------------------------------------------------------------------------
ticker.DispatcherTimerInstance.Tick += (ev, EV) =>
{
    TimeCount.Text = ticker.currentResult.ToString();
};

dp.AddValueChanged(TimeCount, (object a, EventArgs b) =>
{
    if (TimeCount.Text == "00:00:10")
    {
        dt_TimeStart_PW.Stop();
    }
    if (TimeCount.Text == "00:00:10")
    {
        win2.ShowDialog();




    }
    if (TimeCount.Text == "00:05:00")
    {

        win3.ShowDialog();
        //the buttons on the app should be disabled except for save and close

    }
});

dt_TimeStart_PW = new DispatcherTimer();
dt_TimeStart_PW.Start();
dt_TimeStart_TC = new DispatcherTimer();
dt_TimeStart_TC.Start();


dt_TimeStart_PW.Tick += (a, b) =>
{
    GetTaskNameWindows("Please wait...");
    //GetTaskNameWindows("Task Completed");
};
dt_TimeStart_TC.Tick += (a, b) =>
{

    GetTaskNameWindows("Task Completed");
};

谢谢。我希望你能帮助我。

2 个答案:

答案 0 :(得分:0)

只需使用此代码buttonName.IsEnabled=False;即可在达到5分钟时禁用该按钮。此处按钮名称是按钮的名称,您可以在满足条件时根据需要禁用按钮

答案 1 :(得分:0)

您应该考虑使用Microsoft的Reactive Framework(NuGet“System.Reactive”)来帮助解决这个问题。

然后你可以这样做:

var subscription =
    Observable
        .Timer(TimeSpan.FromMinutes(5.0))
        .ObserveOnDispatcher()
        .Subscribe(_ => button.IsEnabled = false);

这就是你需要的全部代码。

如果您想在5分钟之前停止计时器,请执行subscription.Dispose();