Frage von Schroem, 12

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?

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 verschieben, wie mach ich das? Gibts da einen Programmcode dafür oder muss ich in den Objektpropeties etwas ändern? Ich bitte um eine verständliche Antwort, denn ich bin noch Anfänger. Danke

Antwort
von regex9, 5

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-o...

Kommentar von Schroem ,

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?

Kommentar von regex9 ,

Die Methode Form ist dein Konstruktor. Je nachdem, wie deine Klasse heißt, musst du auch den Konstruktor benennen. In meinem Code-Beispiel würde meine Klasse Form heißen.

Keine passende Antwort gefunden?

Fragen Sie die Community