Fenster immer sichtbar

scriptforge

Grünschnabel
Hallo,

ich bin noch sehr frisch in Visual Basic und habe daher nicht sehr viel Ahnung. Bisher habe ich aber alles was ich wollte problemlos hinbekommen. Nun weiß ich aber nicht weiter.

Ich habe ein Programmfenster welches nicht über den Bildschirmrand geschoben werden kann. Also es soll nur innerhalb der Auflösung verschoben werden können?

Kann mir zufällig jemand sagen wie das geht?

VIELEN DANK
 
Mir fällt da nur eine Möglichkeit ein, nämlich mit einem Timer dauernd die Top- und Left-Eigenschaften der Form zu überprüfen. Sollte sich die Form außerhalb des Anzeigebereichs befinden, dann ändert der "Timer-Code" die Top- oder Left-Eigenschaft und schiebt die Form wieder zurück in den Anzeigebereich.
Mit "Screen.Width" und "Screen.Hight" kannst du die Größe und Breite der Bildschirmanzeige erfahren.
 
Danke für deine schnelle Antwort aber könntest du mir vielleicht ein Beispiel-Code geben?

Ich hab leider keine Ahnung wie ich das machen kann.
 
Denken, junger Padawan!
Setz einen Timer auf die Form und nenne ihn "Timer1", dann übertrage diesen Code:
Code:
Private Sub Timer1_Timer()
    If Me.Left + Me.Width > Screen.Width Then Me.Left = Screen.Width - Me.Width
    If Me.Left < 0 Then Me.Left = 0
End Sub
Dieser Code überprüft nur, ob das Fenster links oder rechts aus dem Rand herausgeschoben worden ist. Die Überprüfung für oben und unten wirst du nun hoffentlich selber hinbekommen.
 
Ok ich habe es mal probiert so einzubauen aber in der ersten Zeile sind 2 Fehler:

Error 1 'Width' is not a member of 'System.Windows.Forms.Screen'. C:\Dokumente und Einstellungen\***\Eigene Dateien\Visual Studio 2005\Projects\Project\Form1.vb 4 33 Form1

Error 2 'Width' is not a member of 'System.Windows.Forms.Screen'. C:\Dokumente und Einstellungen\***\Eigene Dateien\Visual Studio 2005\Projects\Project\Form1.vb 4 61 Form1

Woran liegt das?
 
Sag halt gleich dass du mit VB.Net arbeitest! Da kenn ich mich noch nicht so gut aus.....es gibt hier aber ein extra VB.Net-Forum!
 
Versuch mal das:
Code:
    Private Sub Form1_Move(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Move

        If Me.Top < 0 Then
            Me.Top = 0
        End If
        If Me.Left < 0 Then
            Me.Left = 0
        End If

    End Sub
 
Vielen vielen Dank.

Dein Code geht. Du hast mir sehr weitergeholfen. Langsam wird mir das auch klarer. Hätte ich ja auch von allein drauf kommen können *g

Aber ein Problem hab ich noch wo ich nicht weiter weiß.

Für unten und rechts brauch ich das auch. Also habe ich diesen Code dazugeschrieben und rangesetzet:

Code:
        If Me.Right < 0 Then
            Me.Right = 0
        End If
        If Me.Bottom < 0 Then
            Me.Bottom = 0
        End If

Ich bekomme dann aber folgenden Fehler:

Error 1 Property 'Right' is 'ReadOnly'. C:\Dokumente und Einstellungen\****\Eigene Dateien\Visual Studio 2005\Projects\Form1.vb 12 13

Error 2 Property 'Bottom' is 'ReadOnly'. C:\Dokumente und Einstellungen\****\Eigene Dateien\Visual Studio 2005\Projects\Form1.vb 15 13

Warum das? Werde daraus nicht schlau :/
 
Zurück