2017-03-01 2 views
1

MouseHoverイベントを使用して空のデスクトップ上の固定小数点のアプリケーションフォームの外にツールヒントのポップアップが表示されても、ツールヒントとして役立つかどうかはわかりません。可能であれば他の方法でWinformのツールヒントの位置設定

私はこの目標のためのオプションとして別のフォームを表示する方法を求めていません。

+0

グローバルを作成しますかイベントハンドラをクリックしますか?マウスのクリックは、あなたがプログラムをビルド/使用しない限り、あなたのプログラムの外では機能しません。 – EpicKip

+0

ツールヒントをどのように表示しようとしているのかは不明です。どのように表示しているかを示すコードを追加することをお勧めします。次に、他のユーザーが位置付けの問題を解決しようとすることができます。 –

+0

@EpicKipこんにちは、私は上記の間違いを編集しました。私は、テキストボックスやフォーム上でMouseHoverイベントをポップアップツールヒントにしたいのですが、マウスの矢印とは独立して空のデスクトップ上で固定サイズの800x300などのアプリケーションフォームの横にロケーション。 – nikorio

答えて

4

あなたはこれらのオプションのいずれかを使用することができます。自分自身を示すとToolTipを隠し

  1. ハンドル。 MouseHoverToolTipと表示し、希望する場所にMouseLeaveを使用して非表示にすることができます。

  2. MoveWindow Windows APIメソッドを使用すると、ツールヒントがデフォルトの場所ではなく特定の場所に表示されます。

オプション1

あなたはあなたのコントロール(S)のMouseHoverMouseLeaveイベントを処理して、デスクトップウィンドウの特定の場所にこのようToolTipを表示することができます

private void control_MouseHover(object sender, EventArgs e) 
{ 
    var control = (Control)sender; 
    var text = toolTip1.GetToolTip(control); 
    if (!string.IsNullOrEmpty(text)) 
     toolTip1.Show(text, control, control.PointToClient(new Point(100, 100))); 
} 
private void control_MouseLeave(object sender, EventArgs e) 
{ 
    var control = (Control)sender; 
    toolTip1.Hide(control); 
} 

オプション2

私は以前align right edges of a control and ToolTipのために提供オプション、あなたがtrueToolTipOwnerDrawプロパティを設定し、コントロールのDrawイベントを処理し、目的の場所へToolTipを移動するためにMoveWindow、WindowsのAPIメソッドを使用することができます。

[System.Runtime.InteropServices.DllImport("User32.dll")] 
static extern bool MoveWindow(IntPtr h, int x, int y, int width, int height, bool redraw); 
private void toolTip1_Draw(object sender, DrawToolTipEventArgs e) { 
    e.DrawBackground(); 
    e.DrawBorder(); 
    e.DrawText(); 
    var t = (ToolTip)sender; 
    var h = t.GetType().GetProperty("Handle", 
     System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); 
    var handle = (IntPtr)h.GetValue(t); 
    var location = new Point(100,100); 
    MoveWindow(handle, location.X, location.Y, e.Bounds.Width, e.Bounds.Height, false); 
} 
+0

感謝していないとして、ツールヒントの設定を持っています。非常に便利です – nikorio

+0

あなたは大歓迎です:) –

1

最終的には、GUIの特定の項目にマウスを置いたときに何らかの情報を表示するボックスが必要です。また、固定小数点で情報を表示するとします。

ツールチップでこれを達成するとは対照的に、私は次の操作を行います:

  1. 情報を表示し、あなたのWindowsフォーム上のどこかにそれを置くために、いくつかの固定されたラベルまたはテキストボックスを作成します。
  2. マウスのホバーイベントのサブスクライバを作成します。
  3. マウスホバーイベントからsender(あなたがホバリングしていることを制御する)に基づいて、固定の場所に表示する情報を選択します。

他のいくつかのプログラムでこれをやっている人が見てきました。たとえば、RealTermとしましょう。必要に応じて試してみて、このソリューションを試す前にどのように感じるかを見てください。

一方、ツールチップでこれを行う必要がある場合。オーバーロードをToolTip.Showとして使用して位置を選択できます。

関連する問題