C# 如何在计时器停止时从其他应用程序禁用按钮

C# 如何在计时器停止时从其他应用程序禁用按钮,c#,button,disabled-control,C#,Button,Disabled Control,我对C语言编程有点陌生。我想知道是否有一种方法可以让我的wpf按照我想要的方式运行 我正在为桌面应用程序创建计时器。我想让它做的是,如果它达到5分钟,编辑按钮将被禁用,留下的按钮只是为了保存 例如,当我在桌面上打开microsoft word应用程序时,我只有5分钟的时间访问它,如果我达到时间限制,我只能保存它,其他按钮将被禁用 这是我的代码片段 //-------------------------------------------------------------------------

我对C语言编程有点陌生。我想知道是否有一种方法可以让我的wpf按照我想要的方式运行

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

例如,当我在桌面上打开microsoft 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");
};

多谢各位。我希望你能帮助我。

只需使用此代码按钮名。IsEnabled=False在达到5分钟时禁用按钮。此处按钮名称是按钮的名称,当条件满足时,您可以随意禁用按钮。

您应该使用Microsoft的反应式框架(NuGet“System.Responsive”)来帮助解决此问题

然后你可以这样做:

var subscription =
    Observable
        .Timer(TimeSpan.FromMinutes(5.0))
        .ObserveOnDispatcher()
        .Subscribe(_ => button.IsEnabled = false);
这就是您需要的全部代码


如果要在5分钟结束前停止计时器,只需执行
subscription.Dispose()

这是什么语言?C#。很抱歉,我忘记输入语言。请不要使用
TimeCount.Text==“00:05:00”
来确定您应该何时完成任务,因为无法保证计时器将在正确的时间启动以将文本设置为该时间。Windows不是实时操作系统。您需要设置一个时间戳并与之进行比较
var then=DateTime.Now
然后测试
then.AddMinutes(5.0)
。我要禁用的按钮是microsoft word应用程序上的按钮。可以吗?请看一下:[链接]()微软的反应式框架(NuGet“System.Reactive”)--这是什么?