2

ツールチップが 1 つのコントロール上を移動するマウスに追従するようにします。たとえば、パネルを見てみましょう。マウスの位置が Rectangle(100, 100, 50, 50) 内にある場合、ToolTip が表示され、常にマウスの右下に表示されるようにします。この四角形の外側にあるときは、ToolTip を非表示にします。

私はそのようにこれをやろうとしました:

ToolTip toolTip = new ToolTip();
int x, y;

protected override void OnMouseMove(MouseEventArgs e)
{
      if ((x == e.X) && (y == e.Y) && (new Rectangle(100, 100, 50, 50).Contains(e.Location))
          toolTip.Show("some text", this, x + 10, y + 10);
      else
      {
          x = e.X;
          y = e.Y;
          toolTip.Hide(this);
      }
}

しかし、問題があります - ツールチップが表示されると、フォーカスが得られ、その後 OnMouseMove(MouseEventArgs e) が機能しなくなります。その関数の最後にあるパネルにフォーカスを移そうとしましたが、うまくいきません。OnMouseHover でいくつかのトリックも試しましたが、同じ効果でした。

4

1 に答える 1

3

そのために ToolTip を使用しないでください。Panel が描画されている場合は、独自の ToolTip を描画します。それ以外の場合は、Panel を使用して両方からの MouseMove イベントに応答しますが、無視e.Locationして代わりに and を使用System.Windows.Forms.Cursor.PositionPointToClientます。

于 2011-09-01T19:22:41.317 に答える