1

カスタム コントロールを含む「ツールチップ」を作成しようとしています。必要なことを行うものを使用して実装しましたToolStripDropDown-ユーザーが別の場所をクリックしたり、別のウィンドウをアクティブにしたりすると閉じます。

MouseMoveただし、が表示されている場合でも、親コントロールでイベントを取得できるようにしたいと考えていToolStripDropDownます。Capture親コントロールのプロパティをさまざまな段階 (ドロップダウンを表示する前、イベント ハンドラーなど) で設定しようとしましたOpenedが、常にすぐに false に戻されます。親コントロールでイベントを取得する方法 (必ずしもCaptureプロパティを使用する必要はありません)はありますか? MouseMoveいいえ、タイマーを使用してマウスの位置を定期的にチェックするような醜いハックは考えたくありません。

4

1 に答える 1

0

マウスの位置を常に知りたい場合は、次のようにMouseDown、親コントロールとコントロールの両方のイベントを登録する必要があります。ToolStripDropDown

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    lblPosition.Text = e.Location.ToString();
}

private void toolStripDropDownButton2_MouseMove(object sender, MouseEventArgs e)
{
    lblPosition.Text = e.Location.X + toolStripDropDownButton2.Bounds.Location.X + ", " + toolStripDropDownButton2.Bounds.Location.Y + e.Location.Y;
}

あなたはそのToolStripDropDown親に対する相対的な場所を計算する必要があります

于 2012-10-19T19:59:16.003 に答える