Form soll sich nicht verschieben lassen

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von YaPh1l.

    als erstes einmal location festlegen z.b. die mitte des screens
    dann in einen timer mit dem intervall 10:

    VB.NET-Quellcode

    1. If Me.Location.X <> My.Computer.Screen.WorkingArea.X/2-Me.Size.Width Or If Me.Location.Y <> My.Computer.Screen.WorkingArea.Y/2-Me.Size.Height Then
    2. Me.Location.X = My.Computer.Screen.WorkingArea.X/2-Me.Size.Width
    3. Me.Location.Y = My.Computer.Screen.WorkingArea.Y/2-Me.Size.Height
    4. End If
    Was habt ihr alle mit Timern?
    Ein Timer ist für sowas die schlechteste Lösung überhaupt.
    Ich zitiere (wieder einmal :D) der_Kurt, der den Unterschied zwischen Timern und Events sehr anschaulich erklärt hat:

    Du rennst alle x Millisekunden an die Tür, um nachzusehen, ob der Pizzabote schon da ist.
    Die Profis nutzen Events, d.h. sie warten auf dem Sofa, bis der Pizzabote klingelt.

    @Topic: Das Gelaber soll heißen: Steck den Code ins LocationChanged-Event.
    Oder wir tricksen mit der guten alten WinAPI:

    VB.NET-Quellcode

    1. Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
    2. Const WM_SYSCOMMAND As Integer = &H112
    3. Const SC_MOVE As Integer = &HF010
    4. Select Case m.Msg
    5. Case WM_SYSCOMMAND
    6. Dim cmd As Integer = m.WParam.ToInt32() And &HFFF0
    7. If cmd = SC_MOVE Then
    8. Return
    9. End If
    10. End Select
    11. MyBase.WndProc(m)
    12. End Sub

    Mit der Suchen-Funktion hättest du übrigens einen Post gefunden, in dem ich das schonmal gepostet habe.

    Viele Grüße, Phil.