トップ回答者
ToolTip上にボタンを配置した際、クリックできない

質問
-
お世話になります。
ToolTip上にボタンを配置し、そのクリックイベントを拾いたいと思っています。
以下のようにToolTipを記述しました。
--
<TextBlock ToolTipService.VerticalOffset="-40" Text="ツールチップ表示">
<ToolTipService.ToolTip>
<Button>クリック</Button>
</ToolTipService.ToolTip>
</TextBlock>
--
表示されたToolTip上でマウスをクリックするとToolTipが消えてしまい、クリックイベントを拾う事ができません。
何か良い方法はないでしょうか?
回答
-
ToolTip のコンテンツは、フォーカスを受け取ることができません。
なのでクリックイベントなどは発生しません。
以下のようにするとそれらしいことはできますが、ボタン以外をクリックしてもイベントが発生します。
もちろん、マウス座標と Button の座標範囲をチェックすればより細かくチェックはできると思いますが、
Button の形状が四角とは限らないのでめんどくさいのでその部分はやっていません。
<TextBlock Name="textBlock1" ToolTipService.VerticalOffset="-40" Text="ツールチップ表示"> <ToolTipService.ToolTip> <Button Name="button1">クリック</Button> </ToolTipService.ToolTip> </TextBlock>
public Window1() { InitializeComponent(); InputManager.Current.PostNotifyInput += new NotifyInputEventHandler(Current_PostNotifyInput); } void Current_PostNotifyInput(object sender, NotifyInputEventArgs e) { if (e.StagingItem.Input.RoutedEvent == Mouse.MouseDownEvent && e.StagingItem.Input.Source == textBlock1 && button1.IsVisible) { Debug.WriteLine("ToolTipButton_Click"); } }
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12- 回答としてマーク higashi4711 2009年6月15日 1:23
すべての返信
-
ToolTip のコンテンツは、フォーカスを受け取ることができません。
なのでクリックイベントなどは発生しません。
以下のようにするとそれらしいことはできますが、ボタン以外をクリックしてもイベントが発生します。
もちろん、マウス座標と Button の座標範囲をチェックすればより細かくチェックはできると思いますが、
Button の形状が四角とは限らないのでめんどくさいのでその部分はやっていません。
<TextBlock Name="textBlock1" ToolTipService.VerticalOffset="-40" Text="ツールチップ表示"> <ToolTipService.ToolTip> <Button Name="button1">クリック</Button> </ToolTipService.ToolTip> </TextBlock>
public Window1() { InitializeComponent(); InputManager.Current.PostNotifyInput += new NotifyInputEventHandler(Current_PostNotifyInput); } void Current_PostNotifyInput(object sender, NotifyInputEventArgs e) { if (e.StagingItem.Input.RoutedEvent == Mouse.MouseDownEvent && e.StagingItem.Input.Source == textBlock1 && button1.IsVisible) { Debug.WriteLine("ToolTipButton_Click"); } }
えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12- 回答としてマーク higashi4711 2009年6月15日 1:23