Il post mostra un semplice tip per vedere se un punto è visibile nello schermo (anche in presenza di più schermi).
La grafica dell'esempio è "mozzafiato":
Il codice è invece il seguente:
1: Public Class Form1
2:
3: Private Sub Button1_Click(ByVal sender As System.Object, _
4: ByVal e As System.EventArgs) Handles Button1.Click
5: Me.TxtEsito.Text = "..."
6: Dim p As Point
7: Try
8: Me.Cursor = Cursors.WaitCursor
9: Threading.Thread.Sleep(120)
10: p = New Point(Me.TxtX.Text, Me.TxtY.Text)
11: Dim s As Screen = Screen.FromPoint(p)
12: If s Is Nothing Then
13: Me.TxtEsito.Text = "non nello schermo"
14: Else
15: Me.TxtEsito.Text = "Schermo '" & s.DeviceName & "'"
16: ' Verifica se il punto è contenuto
17: If s.WorkingArea.Contains(p) Then
18: Me.TxtEsito.Text &= ": il punto è contenuto!"
19: Else
20: Me.TxtEsito.Text &= ": il punto NON è contenuto!"
21: End If
22: End If
23: Catch ex As Exception
24: Me.TxtEsito.Text = ex.Message
25: Finally
26: Me.Cursor = Cursors.Default
27: End Try
28: End Sub
29:
30:
31: End Class
In pratica è sufficiente determinare lo schermo che "dovrebbe" mostrare il punto che ci interessa:
Dim s As Screen = Screen.FromPoint(p)
Ho scritto "dovrebbe" in quanto, se nessuno schermo contiene quel punto allora il metodo restituisce lo schermo più "vicino" al punto.
A questo punto, per essere sicuri che il punto sia contenuto nell'area visibile dello schermo, basta eseguire la seguente chiamata:
If s.WorkingArea.Contains(p) Then