Habe eine Weile im Internet gesucht, aber nicht gefunden, wonach ich gesucht habe.
Vielleicht kann mir jemand helfen. Hier ist der Kern-Code: http://pastebin.com/qWEFrAuCWie wird das Formular auf dem Bildschirm platziert, auf dem sich die Maus gerade befindet?
Antwort
UPDATE! x2 - Picturebox sollte sich mit der Fensterform bewegen.
Von was ich wissen kann, wenn die Maus das Formular verlassen, wird es auf den gegenüberliegenden Bildschirm Monitor ändern (es tut für mich, obwohl ich nur 2 Monitore) die Menge der Monitore, die Sie haben könnte mehr als 2 sein aber lass mich wissen, wie du gehst.
Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave
If Me.DesktopLocation = Screen.AllScreens(1).Bounds.Location Then
Me.DesktopLocation = Screen.AllScreens(0).Bounds.Location + New Point(100, 100)
PictureBox1.Location = New Point(Screen.AllScreens(0).Bounds.Location + New Point(100, 100))
Else
Me.DesktopLocation = Screen.AllScreens(1).Bounds.Location
End If
End Sub
Ich glaube, er möchte das Formular auf dem gleichen Bildschirm platzieren, wo der Mauszeiger ist. Wie wenn die Maus auf Bildschirm Nr. 3, dann legen Sie das Formular auf Bildschirm-Nr. 3. –
möglicherweise hat er/sie nichts über mehrere Bildschirme erwähnt, ich denke, wir müssen warten und sehen, was sie sagen. – Werdna
Warum sollte er sogar "auf dem Bildschirm" sagen, wenn er nicht mehrere hatte? :) –
Dies bringt Ihr Formular in die Mitte des Bildschirms, auf dem sich der Mauszeiger befindet.
Private Sub CenterToCurrentScreen()
Dim CurrentScreen As Screen = Screen.FromPoint(Cursor.Position)
Me.Location = New Point(_
(CurrentScreen.Bounds.Width/2) - (Me.Width/2), _
(CurrentScreen.Bounds.Height/2) - (Me.Height/2))
End Sub
Zum Beispiel: Aufruf CenterToCurrentScreen()
, wenn der Mauszeiger auf Screen 3 ist, wird das Formular im Zentrum von Screen 3 setzen.
Screen.FromPoint()
geben Sie den Bildschirm an den angegebenen Koordinaten und Cursor.Position
gibt Ihnen die Koordinaten des Mauszeigers.
Yay, Upvote entfernt. Wer möchte erklären warum? –
Sie können die Bildschirme durchlaufen, um nach der Position der Maus in ihren Grenzen zu suchen.
In diesem Beispiel wird ein Formular in den Bildschirm zentriert, auf dem sich die Maus gerade befindet. Wenn Sie die Position während der Fensterbewegung beibehalten möchten, ist ein wenig Aufwand von Ihrer Seite erforderlich.
den Bildschirm zu bestimmen:
Dim scr As Screen =
Screen.AllScreens.Where(Function(x) x.Bounds.Contains(Control.MousePosition)).Single
auf dem Bildschirm das Formular zum Zentrum:
CenterToScreen(Me, scr)
Public Shared Function CenterToScreen(ByVal f As Form, ByVal display As Screen) As Point
If (display Is Nothing) Then
display = Screen.PrimaryScreen
End If
Dim location As New Point With
{
.X = ((display.Bounds.Width - f.Bounds.Size.Width) \ 2),
.Y = ((display.Bounds.Height - f.Bounds.Size.Height) \ 2)
}
f.Location = location
Return location ' Return the new coordinates of the source Form.
End Function
Hinweis: Die Funktion ist Teil der my free API: ElektroKit, wo man weitere nützliche Schnipsel wie bekommen könnte dass man zum Fenster Positionierung auf Klasse bezogen werden:
Schöne Antwort, aber aus Neugier möchte ich wissen, warum Sie die Bildschirme durchlaufen, anstatt nur 'Screen.FromPoint()' aufzurufen? –
@Visual Vincent Nur um eine andere Lösung als die veröffentlichte zu zeigen. Wenn ich das tue, könnte meine Antwort als "Kopie" betrachtet werden. – ElektroStudios
- 1. Forcing Formular auf dem Bildschirm
- 2. Swing-Popup befindet sich unten rechts auf dem Windows-Bildschirm
- 3. Java Maus Bewegung irgendwo auf dem Bildschirm
- 4. auf dem Bildschirm ohne Formular zeichnen
- 5. Wie bekomme ich das Verzeichnis, in dem sich die gerade ausführende JAR-Datei befindet?
- 6. Wie bekomme ich die Mausposition auf dem Bildschirm in WPF?
- 7. Sind Elementvariablen eines Objekts, das sich auf dem Heap befindet, auch automatisch auf dem Heap?
- 8. Wie öffne ich eine Domain basierend auf dem aktuellen Land, in dem sich das Gerät befindet?
- 9. Ruft die Bildschirmgeräteinformationen des Bildschirms ab, auf dem sich der JFrame gerade befindet
- 10. Warum wird getline (...) auf dem Bildschirm gedruckt?
- 11. , wenn es auf dem Bildschirm sichtbar wird
- 12. UserControl wird aufgeblasen, wenn es auf einem Formular platziert wird?
- 13. Xamarin: Auf dem Bildschirm Rotation wird das OptionMenu Icon zweimal
- 14. Wo befindet sich der Android AVD Manager auf dem Mac?
- 15. Suchen Elementposition auf dem Bildschirm
- 16. Wie bekomme ich den Ursprung (auf dem Bildschirm) eines Bildes, das in der Tabellenansicht platziert wurde?
- 17. AVD konnte sich nicht auf dem Bildschirm bewegen
- 18. Woher weiß ich, ob sich die Maus über dem Widget befindet?
- 19. Schnelle Berührung überall auf dem Bildschirm erkennen
- 20. Schaltfläche auf dem ersten Fragment bewegt sich aus dem Bildschirm, wenn das zweite Fragment ersetzt
- 21. Python Zeichnung auf dem Bildschirm
- 22. Floating Rectangle auf dem Bildschirm
- 23. Warum wird die hinzugefügte Ansicht nicht auf dem Bildschirm angezeigt?
- 24. Wie wird das automatische Blättern von Seiten basierend auf der Darstellung auf dem Bildschirm animiert? (angulare)
- 25. Zurücksetzen Benutzersteuerung auf Formular platziert
- 26. TabHost nicht auf dem Bildschirm
- 27. Wie Bash-Shell-Fehler auf dem Bildschirm
- 28. RecyclerWechsel Standort auf dem Bildschirm
- 29. Layout schiebt Ansichten auf dem Bildschirm
- 30. Warum wird das Radscrollereignis nicht ausgelöst, wenn sich die Maus über einem Element "position: fixed" befindet?
Ich glaube, ich verstehe Ihre Frage, aber was ich würde gerne wissen, ob Sie das Formular auf dem gleichen Bildschirm wie der Cursor platzieren möchten _when das Formular shown_ ist oder wenn Sie es tun wollen _whenever Sie den Cursor there_ bewegen . –
Das ist die Art und Weise, wie das Betriebssystem entscheidet, wo Sie Ihr erstes Fenster platzieren sollen. Klingt so, als ob Sie * ein anderes * Fenster erstellen möchten, wenn Sie bereits ein solches haben. Keine großartige Idee, wie sagt Ihnen der Benutzer, dass er es schaffen soll? –
Ich möchte das Formular IMMER auf dem Bildschirm sein, auf dem der Cursor steht. –