Przesuwanie buttona po formie

0

Witam,

Chcę, aby po naciśnięciu na button i przytrzymaniu można było go przesuwać po formie. Chciałbym się jeszcze dowiedzieć jak mogę sprawdzić położenie kursora na panelu, a nie na całym pulpicie.

Z góry dzięki za pomoc :)

0

Dodajesz 2 zdarzenia dla danego buttona

        private void button1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Button butt = sender as Button;
                butt.Left += e.X - ((Point)butt.Tag).X;
                butt.Top += e.Y - ((Point)butt.Tag).Y;
            }
        }

        private void button1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                Button butt = sender as Button;
                butt.Tag = e.Location;
            }
        }

A w konstruktorze formy dodajesz kod podłączający obydwie metody do każdego buttona

            foreach (Control control in Controls)
            {
                if (control is Button)
                {
                    control.MouseMove += new MouseEventHandler(button1_MouseMove);
                    control.MouseDown += new MouseEventHandler(button1_MouseDown);
                }
            }

Lokalizację kursora możesz odczytać dodając np zdarzenie MouseClick do danej kontrolki
Tam masz dostępną klase MouseEventsArgs dzięki której łatwo dostaniesz się do potrzebnych informacji. Np.:

        private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
        {
            int x = e.X;
            int y = e.Y;
            string przycisk = e.Button.ToString();
            MessageBox.Show(x.ToString() + " " + y.ToString() + " " + przycisk);
        }
0

Dzięki, Święty! ;)
O to mi chodziło :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1