Mit folgendem Codeschnippsel kann man ein Panel frei auf der Windows Form bewegen. Es wird nicht überprüft ob das Panel über den Rand der Form geht!
Point position = new Point();
panel.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel_MouseMove);
private void panel_MouseMove( object sender, MouseEventArgs e )
{
Panel p = sender as Panel;
if ( e.Button == MouseButtons.Left )
{
Point mousePos = this.PointToClient( Control.MousePosition );
if ( position.IsEmpty )
position = new Point( mousePos.X - p.Left, mousePos.Y - p.Top );
p.Location = new Point( mousePos.X - position.X, mousePos.Y - position.Y );
}
else if ( !position.IsEmpty )
position = new Point();
}
Kommentare zum Snippet