Heute zeigen wir Ihnen, wie sich verhindern lässt, dass eine Form durch den Benutzer aus den sichtbaren Bildschirmbereich hinaus verschoben werden kann. ' Beispiel: VB .Net ' Form - Verschieben ueber den Bildschirm hinaus verhindern ' Hinweis : Die Taskleiste wird nicht beruecksichtigt. ' D.h. verschoben wird hinter die Taskleiste Option Explicit On Option Strict On Imports System.Runtime.InteropServices Public Class Form1 Private Structure Rectangle Public Left As Int32 Public Top As Int32 Public Right As Int32 Public Bottom As Int32 Public ReadOnly Property Width() As Integer Get Return Right - Left End Get End Property Public ReadOnly Property Height() As Integer Get Return Bottom - Top End Get End Property End Structure Private Sub MemoryBlock( _ ByVal rect As Object, _ ByVal msg As System.IntPtr, _ Optional ByVal Destroy As Boolean = True) System.Runtime.InteropServices.Marshal.StructureToPtr(rect, msg, Destroy) End Sub ' Windows-Message Private Const WM_MOVING As Int32 = &H216 ' Fenster-Nachricht abfangen und reagieren Protected Overrides Sub WndProc(ByRef msg As System.Windows.Forms.Message) If msg.Msg = WM_MOVING Then Dim rect As Rectangle = DirectCast(Marshal.PtrToStructure( _ msg.LParam, GetType(Rectangle)), Rectangle) With rect If .Left < Screen.PrimaryScreen.Bounds.Left Then Dim Width As Integer = .Width .Left = 0 .Right = Width MemoryBlock(rect, msg.LParam) ElseIf .Top < Screen.PrimaryScreen.Bounds.Top Then Dim Height As Integer = .Height .Top = 0 .Bottom = Height MemoryBlock(rect, msg.LParam) ElseIf .Right > Screen.PrimaryScreen.Bounds.Right Then Dim Width As Integer = .Width .Right = Screen.PrimaryScreen.Bounds.Right .Left = .Right - Width MemoryBlock(rect, msg.LParam) ElseIf .Bottom > Screen.PrimaryScreen.Bounds.Bottom Then Dim Height As Integer = .Height .Bottom = Screen.PrimaryScreen.Bounds.Bottom .Top = .Bottom - Height MemoryBlock(rect, msg.LParam) End If End With End If MyBase.WndProc(msg) End Sub End Class Dieser Tipp wurde bereits 9.366 mal aufgerufen.
Anzeige
Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv (einschl. Beispielprojekt!) Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv! - nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten - Symbol-Galerie mit mehr als 3.200 Icons im modernen Look Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m. |
Neu! sevPopUp 2.0 ![]() Dynamische Kontextmenüs! Erstellen Sie mit nur wenigen Zeilen Code Kontextmenüs dynamisch zur Laufzeit. Vordefinierte Styles (XP, Office, OfficeXP, Vista oder Windows 8) erleichtern die Anpassung an die eigenen Anwendung... Tipp des Monats Heinz Prelle Datei-Mehrfachauswahl an eine ListBox übergeben Dieser Tipp zeigt, wie Sie über den Windows-CommonDialog eine Mehrfach-Dateiauswal realisieren... TOP Entwickler-Paket ![]() TOP-Preis!! Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1866.50 EUR... |
||||||||||||||||
|
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein. |
|||||||||||||||||


Verschieben über den Bildschirmrand unterbinden (.NET)


