Событие перемещения мыши на панели - c# winform - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть панель с кнопкой. Я хочу переместить эту панель при наведении мыши. Я попробовал, как показано ниже. Но когда мышь над кнопкой, панель не двигается. Работает только когда мышь находится на панели. Я должен заставить его работать на любой точке панели независимо от элементов управления в ней.

        this.panelLeft.Controls.Add(this.button1);
        this.panelLeft.Location = new System.Drawing.Point(21, 171);
        this.panelLeft.Name = "panelLeft";
        this.panelLeft.Size = new System.Drawing.Size(662, 324);
        this.panelLeft.TabIndex = 15;
        this.panelLeft.MouseDown += new System.Windows.Forms.MouseEventHandler(this.panelLeft_MouseDown);
        this.panelLeft.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panelLeft_MouseMove);

   private void panelLeft_MouseDown(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            MouseDownLocation = e.Location;
        }
    }
    private void panelLeft_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == System.Windows.Forms.MouseButtons.Left)
        {
            panelLeft.Left = e.X + panelLeft.Left - MouseDownLocation.X;
            panelLeft.Top = e.Y + panelLeft.Top - MouseDownLocation.Y;
        }
    }

1 Ответ

2 голосов
/ 27 февраля 2020

Поскольку обработчик событий добавляется только для панели, добавьте тот же код к кнопке

Btn.MouseDown += panelLeft_MouseDown;

или l oop над каждым элементом управления внутри панели и назначьте им обработчик событий

...