Как проверить, находится ли позиция курсора вне элемента управления графиком в форме окна? - PullRequest
1 голос
/ 07 июня 2019

Я показываю tooltip в MS chart. При переходе от элемента управления диаграммы к другим элементам управления или формированию свободного пространства tooltip не скрывается.

Как проверить, находится ли позиция курсора вне элемента управления диаграммы в форме окна?

Я попробовал приведенный ниже код, он не работал для меня.

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
    if (!chart.ClientRectangle.Contains(chart.PointToClient(new Point(e.X,e.Y))))
    {
        if (ToolTip != null)
            ToolTip.Hide(chart);
     }
 } 

Я поставил трассировку и проверил: если я перемещаюсь, чтобы сформировать свободное пространство из элемента управления диаграммы, событие запускается, только при переходе к другому элементу управления из диаграммы Form1_MouseMove не вызывается.

Как решить мою проблему?

1 Ответ

1 голос
/ 07 июня 2019

Попробуйте обработать события MouseEnter и MouseLeave на целевом элементе управления (диаграмма в вашем случае, кнопка в моем).

using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp
{
    public partial class Form1 : Form
    {
        private const string mouseIsOver = "Mouse is over";
        private const string mouseIsOutside = "Mouse is outside";

        public Form1()
        {
            InitializeComponent();
            var button = new Button { Text = mouseIsOutside, AutoSize = true, Location = new Point(10, 10) };
            button.MouseEnter += (sender, e) => button.Text = mouseIsOver;
            button.MouseLeave += (sender, e) => button.Text = mouseIsOutside;
            this.Controls.Add(button);

        }
    }
}

enter image description here

...