Sì, basta aggiungere ad ogni bottone il gestore eventi per MouseDown e MouseMove:
void CreaBottoni()
{
for (int i = 0; i < 5; i++)
{
Button test = new Button();
test.Text = "test numero:" + i.ToString();
test.MouseDown += new MouseEventHandler(test_MouseDown);
test.MouseMove += new MouseEventHandler(test_MouseMove);
this.Controls.Add(test);
buttons[i] = test;
}
}
void test_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Point pt = Control.MousePosition;
pt.Offset(offset);
(sender as Button).Location = this.PointToClient(pt);
}
}
Point offset;
void test_MouseDown(object sender, MouseEventArgs e)
{
offset = new Point(-e.X, -e.Y);
}
Luca