문제

그래서 나는 MainForm과 Extraform의 두 가지 형태가 있습니다.
extraform은 mainform이 초기화되면 항상 mainform의 오른쪽으로 이동합니다.
때때로 MainForm은 모니터를 모두 가져오고 Extraform은 다시는 볼 수 없도록 화면에서 밀려납니다. 가능하면 이것을 막고 싶습니다. 어떻게 그렇게 할 수 있습니까? 이중 모니터를 지원해야하며, 이중 모니터 사이에 거리가 있거나 거리가 없을 수도 있습니다 (즉, 화면 1은 화면 2의 왼쪽에서 20px입니다).

어떻게 할 수 있습니까?

도움이 되었습니까?

해결책

화면 클래스를 사용하여 창이 데스크탑과 관련된 곳을 해결할 수 있습니다. 화면 클래스에는 ourrectangle 메소드가 있으므로 양식의 경계 속성을 전달하여 양식을 배치 해야하는 화면을 파악할 수 있습니다.

각 화면 객체에는 바운드 속성이 있는데,이 속성은 창의 위치와 크기와 비교하고 그에 따라 조정하는 데 사용할 수 있습니다.

다른 팁

Extraform이 화면의 한계를 넘어 밀면 원하는 일에 달려 있습니다.

그러나 푸시가 꺼져 있는지 여부를 알아 내기 위해 System.windows.forms.screens 클래스를 사용하는 것은 매우 간단합니다. 그런 다음 그렇게하는 경계 확인을 수행 할 수 있습니다.

        foreach (var screen in Screen.AllScreens)
        {
            if(screen.Bounds.Contains(this.Bounds))
            {
                Console.WriteLine("Device "+screen.DeviceName+" contains form!");
            }
        }

코드는 양식에 있다고 가정합니다. 이 코드는 양식이 화면에 완전히 포함 된 경우 화면에 양식이 포함되어 있음을 인쇄합니다. 그러나 이것은 귀하의 요구에 따라 수정하기가 다소 간단해야합니다.

아마도 당신의 양식의 DesktopLocation 속성은 그들과 함께 일어나는 일에 무슨 일이 일어나고 있는지에 대한 단서를 줄 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top