C#: Stellt euch vor, ich packe in ein neues Projekt einfach einen Button rein, starte das Projekt und nun möchte ich ihn mit dem Drag n Drop Prinzip verschiebe?

... komplette Frage anzeigen

1 Antwort

Ich vermute mal, du arbeitest mit Windows Forms.

Wenn du den Button nur innerhalb deines Forms/Fensters verschieben möchtest, reicht es, Event-Handler zu definieren, die auf bestimmte Mausaktivitäten reagieren, und sie im Konstruktor dem Button anzuhängen.

private bool dragged;
private Point offset;

public Form()
{
this.dragged = false;

// dein Button muss yourButton heissen
this.yourButton.MouseDown += this.button_MouseDown;
this.yourButton.MouseMove += this.button_MouseMove;
this.yourButton.MouseUp += this.button_MouseUp;
}

private void button_MouseDown(object sender, MouseEventArgs e)
{
if(MouseButtons.Left == e.Button)
{
this.dragged = true;
Point startPosition = button.PointToScreen(new Point(e.X, e.Y));

this.offset = new Point();
this.offset.X = button.Location.X - startPosition.X;
this.offset.Y = button.Location.Y - startPosition.Y;
return;
}
}

private void button_MouseMove(object sender, MouseEventArgs e)
{
if(this.dragged)
{
Point endPosition = button.PointToScreen(new Point(e.X, e.Y));
endPosition.Offset(this.offset);
button.Location = endPosition;
}
}

private void button_MouseUp(object sender, MouseEventArgs e)
{
this.dragged = false;
}

Solltest du den Button von einem Form zu einem anderen Form verschieben wollen, brauchst du Event-Handler für die Drag- und Drop-Events. Hier findest du ein praktisches Beispiel: http://stackoverflow.com/questions/11407068/how-to-drag-and-drop-a-button-from-one-panel-to-another-panel.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Schroem
19.02.2016, 14:27

Ja, genau ich arbeite mit WindowsForms.

Wenn ich das jetzt genauso wie du es geschrieben hast in mein Editor einfüge und auch meinen Button in "yourButton" umbenenne, kommt bei mir Fehlercode 35: Die Methode muss einen Rückgabetyp besitzen. 

(Rot markiert wird dabei, in Zeile 4 das "Form()")

Warum?

0

Was möchtest Du wissen?