VB.NET-양식을 다음 모니터로 이동하고 최대화

클린턴 손 크래프트

누구든지 양식을 오른쪽의 다음 창으로 이동 (또는 현재 모니터가 마지막 모니터 인 경우 순환)하고 최대화하는 방법을 알고 있습니까? 나는 "정상"윈도우 상태에있는 경우 폼을 이동하는 코드 (자신을 배웠으므로 친절 해지십시오)를 가지고 놀면서 작성했지만 최대화 부분에 갇혀 있습니다. WindowState = Maximized가 그것을 할 것이라고 생각했을 것입니다. 그러나 폼에 그것을 설정하면 이동 기능이 응답하지 않습니다.

다음은 지금까지 내가 가지고있는 코드입니다.

Module Monitor

    Public totalMonitors As Integer = System.Windows.Forms.Screen.AllScreens.Count

    Private xPositionForMonitors As New Dictionary(Of Integer, Integer)
    Private yPositionForMonitors As New Dictionary(Of Integer, Integer)
    Private currentMonitorIndex As Integer
    Private newMonitorIndex As Integer

    Public Sub buildMonitorArray()

        For m As Integer = 0 To (totalMonitors - 1)
            xPositionForMonitors.Add(m, System.Windows.Forms.Screen.AllScreens(m).WorkingArea.Location.X)
            yPositionForMonitors.Add(m, System.Windows.Forms.Screen.AllScreens(m).WorkingArea.Location.Y)
        Next

    End Sub

    Public Sub moveToNextMonitor(targWindow As Form)

        identifyCurrentMonitor(targWindow)
        targWindow.SetDesktopLocation(xPositionForMonitors(newMonitorIndex) + 1, 0)

    End Sub

    Private Sub identifyCurrentMonitor(targWindow As Form)

        For c As Integer = 0 To (totalMonitors - 1)
            If targWindow.Location.X + 10 > xPositionForMonitors(c) Then
                currentMonitorIndex = c
            End If
        Next

        newMonitorIndex = currentMonitorIndex + 1
        If newMonitorIndex = totalMonitors Then newMonitorIndex = 0

    End Sub

End Module

현재 양식로드시 buildMonitorArray 함수를 호출 한 다음 양식에서 moveToNextMonitor (Me)를 사용하고 있습니다.

user3308241

이동하기 전에 WindowState를 Normal로 설정 한 다음 이동하면 원래 상태로 다시 설정해야합니다. 양식을 이동하기 전에 buildMonitorArray 메서드를 호출하는 것에 대해 걱정할 필요가 없도록 코드를 클래스로 변환했습니다. 메서드를 호출하려면 현재 클래스이므로 Monitor.moveToNextMonitor를 호출해야합니다. 여전히 모듈을 사용하고 싶다면 코드 변경 사항을 모듈로 이식 할 수 있으며 여전히 동일한 방식으로 작동합니다.

Public Class Monitor

Shared Sub New()
    buildMonitorArray()
End Sub

Public Shared totalMonitors As Integer = System.Windows.Forms.Screen.AllScreens.Count

Private Shared xPositionForMonitors As New Dictionary(Of Integer, Integer)
Private Shared yPositionForMonitors As New Dictionary(Of Integer, Integer)

Public Shared Sub buildMonitorArray()
    For m As Integer = 0 To (totalMonitors - 1)
        xPositionForMonitors.Add(m, System.Windows.Forms.Screen.AllScreens(m).WorkingArea.Location.X)
        yPositionForMonitors.Add(m, System.Windows.Forms.Screen.AllScreens(m).WorkingArea.Location.Y)
    Next
End Sub

Public Shared Sub moveToNextMonitor(targWindow As Form)
    Dim newMonitorIndex As Integer = identifyCurrentMonitor(targWindow)
    Dim originalState = targWindow.WindowState
    Try
        If originalState <> FormWindowState.Normal Then
            targWindow.WindowState = FormWindowState.Normal
        End If
        targWindow.SetDesktopLocation(xPositionForMonitors(newMonitorIndex) + 1, 0)
    Finally
        targWindow.WindowState = originalState
    End Try
End Sub

Private Shared Function identifyCurrentMonitor(targWindow As Form) As Integer
    Dim currentMonitorIndex As Integer
    Dim newMonitorIndex As Integer
    For c As Integer = 0 To (totalMonitors - 1)
        If targWindow.Location.X + 10 > xPositionForMonitors(c) Then
            currentMonitorIndex = c
        End If
    Next

    newMonitorIndex = currentMonitorIndex + 1
    If newMonitorIndex = totalMonitors Then newMonitorIndex = 0
    Return newMonitorIndex
End Function

End Class

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

VB.NET-다른 양식을로드하지 않고 탐색

분류에서Dev

한 양식의 내용을 다른 양식 vb.net에서 새로 고침

분류에서Dev

VB.NET에서 양식이 닫히는 것을 방지하기 위해 양식이 메시지 상자의 대안으로 어떻게 작동합니까?

분류에서Dev

vb.net 2008에서 양식을 다시로드 / 새로 고침 / 재설정하는 방법

분류에서Dev

vb.net은 양식에서 지정된 문자열로 시작하는 컨트롤을 찾습니다.

분류에서Dev

vb.net : JSON의 데이터를 다른 양식 / 스레드의 데이터 그리드로 수집하는 동안 오류가 발생했습니다.

분류에서Dev

양식 디자이너는 vb.net의 양식 만 표시합니다.

분류에서Dev

다중 모니터로 테두리없는 양식 최대화 C #

분류에서Dev

system.net.mail을 사용하여 VB 양식에서 메일을 보낼 수 없습니다.

분류에서Dev

VB6은 양식 크기 조정 Windows 10에서 자식 양식을 자동 활성화하지 않습니다.

분류에서Dev

vb.net-다른 모듈에서 양식 요소의 속성을 변경하는 방법

분류에서Dev

vb.net winform 다운로더 일시 중지 및 다시 시작이 제대로 작동하지 않음

분류에서Dev

VB.NET 다른 양식에 값을 전달하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

vb.net 옵션을 사용하여 두 양식 간 이동

분류에서Dev

크기가 다른 모니터간에 RDC 창을 이동 한 후 최대화

분류에서Dev

양식 지연없이 ftp에서 다운로드하는 방법 vb.net

분류에서Dev

VB에서 다른 양식이 열려있을 때 기본 양식을 비활성화하는 방법

분류에서Dev

BerkeleyDB는 성능을 최대화하고 데이터 손실을 최소화합니다.

분류에서Dev

VB.NET에서 다른 사람 위에 양식을 유지하는 방법?

분류에서Dev

vb.net의 다른 양식에서 특정 탭을 표시하는 방법

분류에서Dev

VS2010 VB.NET Winforms는 프로그래밍 방식으로 시작 양식을 선택합니다.

분류에서Dev

VB6에서와 같이 '정적으로'VB.Net 양식을 사용할 수 있습니까?

분류에서Dev

파일을 하나씩 이동하고 vb.net의 디렉터리에서 다른 디렉터리로 이름을 바꾸는 방법

분류에서Dev

하나의 방법으로 여러 양식을 처리하는 VB.NET

분류에서Dev

레이블이 동적으로 생성 된 양식 vb.net에 나타나지 않습니다.

분류에서Dev

양식을 최대화하지만 작업 표시 줄을 가리지 않음

분류에서Dev

vb.net에서 if 문이 제대로 작동하지 않습니다.

분류에서Dev

속성이 False 인 경우에도 VB.NET 양식이 잠 깁니다.

분류에서Dev

ASP.NET MVC 양식 입력이 예상대로 작동하지 않음

Related 관련 기사

  1. 1

    VB.NET-다른 양식을로드하지 않고 탐색

  2. 2

    한 양식의 내용을 다른 양식 vb.net에서 새로 고침

  3. 3

    VB.NET에서 양식이 닫히는 것을 방지하기 위해 양식이 메시지 상자의 대안으로 어떻게 작동합니까?

  4. 4

    vb.net 2008에서 양식을 다시로드 / 새로 고침 / 재설정하는 방법

  5. 5

    vb.net은 양식에서 지정된 문자열로 시작하는 컨트롤을 찾습니다.

  6. 6

    vb.net : JSON의 데이터를 다른 양식 / 스레드의 데이터 그리드로 수집하는 동안 오류가 발생했습니다.

  7. 7

    양식 디자이너는 vb.net의 양식 만 표시합니다.

  8. 8

    다중 모니터로 테두리없는 양식 최대화 C #

  9. 9

    system.net.mail을 사용하여 VB 양식에서 메일을 보낼 수 없습니다.

  10. 10

    VB6은 양식 크기 조정 Windows 10에서 자식 양식을 자동 활성화하지 않습니다.

  11. 11

    vb.net-다른 모듈에서 양식 요소의 속성을 변경하는 방법

  12. 12

    vb.net winform 다운로더 일시 중지 및 다시 시작이 제대로 작동하지 않음

  13. 13

    VB.NET 다른 양식에 값을 전달하는 가장 좋은 방법은 무엇입니까?

  14. 14

    vb.net 옵션을 사용하여 두 양식 간 이동

  15. 15

    크기가 다른 모니터간에 RDC 창을 이동 한 후 최대화

  16. 16

    양식 지연없이 ftp에서 다운로드하는 방법 vb.net

  17. 17

    VB에서 다른 양식이 열려있을 때 기본 양식을 비활성화하는 방법

  18. 18

    BerkeleyDB는 성능을 최대화하고 데이터 손실을 최소화합니다.

  19. 19

    VB.NET에서 다른 사람 위에 양식을 유지하는 방법?

  20. 20

    vb.net의 다른 양식에서 특정 탭을 표시하는 방법

  21. 21

    VS2010 VB.NET Winforms는 프로그래밍 방식으로 시작 양식을 선택합니다.

  22. 22

    VB6에서와 같이 '정적으로'VB.Net 양식을 사용할 수 있습니까?

  23. 23

    파일을 하나씩 이동하고 vb.net의 디렉터리에서 다른 디렉터리로 이름을 바꾸는 방법

  24. 24

    하나의 방법으로 여러 양식을 처리하는 VB.NET

  25. 25

    레이블이 동적으로 생성 된 양식 vb.net에 나타나지 않습니다.

  26. 26

    양식을 최대화하지만 작업 표시 줄을 가리지 않음

  27. 27

    vb.net에서 if 문이 제대로 작동하지 않습니다.

  28. 28

    속성이 False 인 경우에도 VB.NET 양식이 잠 깁니다.

  29. 29

    ASP.NET MVC 양식 입력이 예상대로 작동하지 않음

뜨겁다태그

보관