我有一個工具提示按鈕的應用程序。按下其中一個按鈕(此後稱爲「運行」按鈕)會在應用程序按下時開始執行觸發過程。因爲我的應用程序需要從這些進程中獲取輸出的數據,所以我暫停了,直到所有進程完成運行,然後在沒有進一步用戶干預的情況下獲取數據。當然,這意味着我的應用程序在外部進程運行時被掛起,但這沒什麼大不了的,因爲用戶可以在應用程序之外點擊並處理其他內容;我的應用程序落到了後臺。不幸的是,與「運行」按鈕關聯的工具提示不屬於背景,直到我的代碼停止執行後纔會消失。如何讓System.Windows.Controls.Tooltip立即淡出?
下面的代碼有所幫助:
private void RunButton_Click(object sender, RoutedEventArgs e)
{
/*Gets the tooltip out of the way while running, otherwise it will stay in front of everything until the optimizers finish.*/
ToolTipService.SetShowDuration(runButton, 0);
RunTooltip.IsOpen = false;//Doesn't close fast enough. It fades a little then hangs there until the code stop running. googling has been remarkably unhelpful.
Run();
ToolTipService.SetShowDuration(runButton, 5000);
}
RunTooltip是有問題的工具提示的名稱。將持續時間設置爲0或設置isOpen爲false具有相同的行爲:導致工具提示變爲半透明(但仍然高於其他任何窗口),直到Run()結束。
似乎有一種方法可以使工具提示淡出與Windows.Forms.Tooltips立即發生(請參閱http://msdn.microsoft.com/en-us/library/system.windows.forms.tooltip.usefading.aspx),但WPF工具提示不再是這種情況(http://msdn.microsoft.com/ en-us/library/ms617634.aspx)
除了完全刪除此按鈕的工具提示外,如何讓此工具提示免於阻礙用戶在等待我的應用程序完成時想要執行的操作? 謝謝
您的問題是由於線程引起的。將您的運行操作移動到新線程中。這將允許執行Run操作,同時仍允許主線程運行並關閉工具提示。您仍然可以鎖定應用程序啓用/禁用/隱藏/可見,以停止用戶輸入...編輯是由於我有一個老年時刻... – Sorceri