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 :)
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 :)
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);
}
Dzięki, Święty! ;)
O to mi chodziło :)