Tipp 0045 Form ohne Titelleiste verschieben
Autor/Einsender:
Datum:
  Michael Werner
18.06.2004
Entwicklungsumgebung:   VB.Net 2003
Framework:   1.1
In VB 6 musste man noch APIs bemühen, um ein Fenster ohne Titelleiste verschieben zu können. In VB.Net kann dies mit einer Überschreibung von Methoden und dem Einsatz der Schlüsselwörter Overloads und MyClass gelöst werden.
Mit dem Overloads-Schlüsselwort werden hier Methoden deklariert, die zwar den Namen eines vorhandenen Members tragen, aber eine vom ursprünglichen Member abweichende Argumentliste aufweisen. Abgeleitete Klassen erben Eigenschaften und Methoden, die in ihrer Basisklasse definiert sind. Dies ist praktisch, da Sie diese Elemente wiederverwenden können, sobald sie für die von Ihnen verwendete Klasse erforderlich sind.
 
Public Class Form1
  Inherits System.Windows.Forms.Form
Vom Windows Form Designer generierter Code
  Private CurrentPosition As New System.Drawing.Point
  Private MouseButton As _
          System.Windows.Forms.MouseButtons = Nothing

  Private Overloads Sub OnMouseDown( _
          ByVal Sender As System.Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs) _
          Handles MyBase.MouseDown

    MyClass.MouseButton = e.Button()
    With MyClass.CurrentPosition
      .X = e.X()
      .Y = e.Y()
    End With
  End Sub

  Private Overloads Sub OnMouseUp( _
          ByVal Sender As System.Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs) _
          Handles MyBase.MouseUp

    MyClass.MouseButton = Nothing
  End Sub

  Private Overloads Sub OnMouseMove( _
          ByVal Sender As System.Object, _
          ByVal e As System.Windows.Forms.MouseEventArgs) _
          Handles MyBase.MouseMove

    Select Case MyClass.MouseButton
      Case Is = MouseButtons.Left
        MyClass.Top = MyClass.Cursor.Position.Y() - _
              MyClass.CurrentPosition.Y()
        MyClass.Left = MyClass.Cursor.Position.X() - _
              MyClass.CurrentPosition.X()
      Case Is = Nothing
        Exit Sub
    End Select
  End Sub

  Private Sub Form1_Load(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles MyBase.Load
    Label1.Text = "FormBorderStyle = None"
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    MyClass.Close()
  End Sub
End Class
 
Weitere Links zum Thema
Form an die Bildschirmränder andocken

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (6,2 kB) Downloads bisher: [ 825 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Sonntag, 22. Januar 2012