[C# 윈폼] C# 다중 모니터 감지 및 사용하기 (Screen)


안녕하세요.

 

오늘은 C# 에서 다중 모니터를 감지하고 사용하는 방법에 대해서 알아 보려고 합니다.

 

바로, C# 에서 기본으로 제공해주는 Screen 클래스를 이용하면 되는데요.

 

요새는 보통 PC 하나에 듀얼 모니터 혹은 그 이상의 모니터를 HDMI 케이블을 이용하여 연결해서 사용하는데요.

 

종종, 프로그램 개발을 하다 보면 1번 모니터, 2번 모니터에 각각 다른 창을 동시에 띄울 수 있게 프로그램을 개발해달라는 고객 분들도 있었는데요.

 

이럴 때 유용하게 사용할 수 있는 소스코드라고 생각합니다!


 

그럼 바로 예제 코드를 작성해 보도록 하겠습니다.

 

먼저 빈 윈폼 프로젝트를 생성해 주시기 바랍니다.

 

빈 윈폼 프로젝트 생성 및 Form2 폼 하나 더 추가하기



이제 다중 모니터를 감지하는 소스코드를 작성해 보도록 하겠습니다.

 

예제 코드


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace DualScreenTest

{

    public partial class Form1 : Form

    {

        Form2 frm = new Form2();

 

        public Form1()

        {

            InitializeComponent();

 

            this.Load += FormLoad_Event;

        }

 

        /// <summary>

        ///  Load 이벤트 핸들러

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void FormLoad_Event(object sender, EventArgs e)

        {

            ScreenDetect();

        }

 

        /// <summary>

        /// 다중 모니터 감지

        /// </summary>

        private void ScreenDetect()

        {

            Screen[] sc = Screen.AllScreens;

      

            if (sc.Length > 1)

            {

                Screen screen = (sc[0].WorkingArea.Contains(this.Location)) ? sc[1] : sc[0];

 

                frm.Show();

                frm.Location = screen.Bounds.Location;

                frm.WindowState = FormWindowState.Maximized;

            }

        }

    }

}

 

Colored by Color Scripter

cs

 

실행 결과



 

위와 같이 Display 2개가 잡히는 것을 확인하실 수 있습니다.

 

그리고 해당 프로그램을 실행시켜보면, Display1Main 폼이 뜨고, Display2Form2 가 뜨는 것을 확인하실 수 있습니다.

 


 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY