2017-05-30 4 views
-1

私は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"); 
}; 

ありがとうございます。あなたが私を助けることを願っています。

+0

これはどの言語ですか? – WhatsThePoint

+0

C#。申し訳ありませんが、言語を入力するのを忘れてしまいました。 –

+0

'TimeCount.Text ==" 00:05:00 "'を使って、タスクをいつ行うべきかを判断しないようにしてください。タイマーがテキストを設定するのに適切なタイミングで起動するという保証はありません。 Windowsはリアルタイムオペレーティングシステムではありません。タイムスタンプを設定し、そのタイムスタンプと比較する必要があります。 'var then = DateTime.Now;'そして 'then.AddMinutes(5.0) Enigmativity

答えて

0

このコードbuttonName.IsEnabled=False;を使用して、ボタンが5分に達したときに無効にするだけです。ここでボタン名はボタンの名前であり、条件が満たされたときに好きなようにボタンを無効にすることができます

+0

無効にしたいボタンは、Microsoft Wordアプリケーションのボタンです。それはできますか? –

+0

[リンク](https://stackoverflow.com/questions/13074554/disable-the-save-as-button-in-word-2010) –

0

これを助けるにはMicrosoftのリアクティブフレームワーク(NuGet "System.Reactive")を使用します。

その後、あなたはこれを行うことができます:あなたが必要とする全体のコードです

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

を。

5分前にタイマーを停止したい場合は、subscription.Dispose();を実行してください。

+0

マイクロソフトのリアクティブフレームワーク(NuGet "System.Reactive") - これは何ですか? –

+0

こちらをご覧ください:https://www.nuget.org/packages/System.Reactive/ – Enigmativity

関連する問題