ツールチップ付きのボタンがいくつかあるアプリケーションがあります。これらのボタンの 1 つ (以降、実行ボタンと呼びます) を押すと、アプリケーションの外部でプロセスの起動が開始されます。私のアプリケーションはこれらのプロセスから取得した出力からデータを取得する必要があるため、すべてのプロセスの実行が完了するまでアプリケーションを一時停止し、ユーザーの介入なしにデータを取得します。もちろん、これは外部プロセスの実行中にアプリケーションがハングすることを意味しますが、ユーザーはクリックしてアプリケーションの外部で他の作業を行うことができるため、大したことではありません。私のアプリケーションはバックグラウンドに落ちます。残念ながら、[実行] ボタンに関連付けられたツールヒントはバックグラウンドに移動せず、コードの実行が停止するまで消えません。
次のコードが少し役に立ちました。
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 は、問題の ToolTip の名前です。期間を 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) には当てはまらないようです。
このボタンのツールチップを完全に削除する以外に、このツールチップがアプリケーションの終了を待っている間にユーザーがやりたいことの邪魔にならないようにするにはどうすればよいですか? ありがとう