Um eine Transparente Form zu erstellen mit der es möglich ist diese per Click & Drag auf dem Desktop zu verschieben, sind folgende Schritte notwendig:

1. Neues Projekt erstellen.

2. Im Projektmappen Explorer Form1.Designer wählen und dort die Grösse nach belieben anpassen.

3. Dann ziehen wir eine PictureBox, die fast so gross ist, wie das Formular.

4. Nun laden wir uns das entsprechende Bild, welches unser neues Formular darstellen soll.

5. Die PictureBox bekommt als BackgroundColor Transparenz zugewiesen.

6. Nun ändern wir die Form in den Eigenschaften ab, in dem wir den FormBorderStyle auf None stellen.

7. Und in den Eigenschaften des Formulars, ganz unten namens TransparencyKey auf Transparent.

8. Im Projektmappen Explorer wählen wir nun die Ereignisse für die Form (welche noch immer selektiert ist) aus:

9. Dort suchen wir nach MouseDown und klicken diese doppelt, das selbe mit MouseMove.

10. dann instanzieren wir oberhalb beider MouseEvents, aus der Klasse Point ein Objekt namens Click

1
Point click;

in dem MouseDownEvent schreiben wir:

1
click = new Point(e.X, e.Y);

und im MouseMoveEvent folgendes

1
2
3
4
5
if (e.Button == MouseButtons.Left)
{
  this.Left += e.X - click.X;
  this.Top += e.Y - click.Y;
}

11. Die Events für die PictureBox erstellen wir auf der selben Weise, wie bei dem Formular:

12. In diesen Events rufen wir nun die jeweiligen Methoden vom Formular auf:

1
2
3
4
5
6
7
8
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
  Form1_MouseDown(sender, e);
}
  private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
  Form1_MouseMove(sender, e);
}

Kompilieren & Ausführen (F5)
Et Voilà* Voilá** und fertig.

Wenn zu diesem Tut noch Fragen offen sind, einfach die Kommentarfunktion benutzen ; )

hf & enjoy!

*, **

Related Blogs

Transparente Form inkl. Click & Drag / Tutorial C# .NET
Markiert in:        

6 thoughts on “Transparente Form inkl. Click & Drag / Tutorial C# .NET

  • Dezember 31, 2008 bei 17:09
    Permalink

    Das geht leider nicht, glaube das ich das probiert habe…

  • Dezember 31, 2008 bei 17:05
    Permalink

    Warum noch eine Picturebox, man könnte das Bild doch auch einfach als Backgroundimage der Form setzen.

    LG Karim

  • August 20, 2009 bei 11:09
    Permalink

    hi
    2 anmerkungen noch zu deinem tut

    1. Ja man braucht nicht extra eine picture box
    2. hast vdu ergessen zu sagen, dass die Farbe des TransparencyKey gleich der hintergrundfarbe der Form sein muss

    sonst aber seh schön beschrieben
    gruß
    Falk

  • August 20, 2009 bei 21:26
    Permalink

    Danke für die Ergänzung : )

  • Dezember 2, 2009 bei 15:17
    Permalink

    Implementierung in WPF:

    private void Window_MouseDown(object sender, MouseEventArgs e)
    {
    point = new Point(e.GetPosition(this).X, e.GetPosition(this).Y);

    }

    private void Window_MouseMove(object sender, MouseEventArgs e)
    {
    if (e.LeftButton == MouseButtonState.Pressed)
    {
    this.Left += e.GetPosition(this).X – point.X;
    this.Top += e.GetPosition(this).Y – point.Y;
    }
    }

  • Dezember 4, 2009 bei 11:07
    Permalink

    Noch einfacher gehts so:

    this.MouseDown += (Window_MouseMove);

    private void Window_MouseMove(object sender, MouseEventArgs e)
    {
    this.DragMove();
    }

Kommentare sind deaktiviert.