[C# 윈폼] UserControl(사용자 정의 컨트롤) 유저컨트롤 메인 폼에서 이벤트 선언 및 호출하기


안녕하세요.

 

오늘은 C# 윈폼에서 이벤트 선언 및 호출에 대해서 알려드리려고 합니다.

 

그 중에서도, 유저컨트롤(UserControl)에서 생성한 컨트롤의 이벤트를 메인 폼에 호출해서 이벤트가 발생 되도록 하는 방법에 대해서 어떻게 하는지 예제 코드를 통해서 보여 드리려고 해요.


 

그럼 바로 예제 프로그램을 통해 어떻게 유저컨트롤의 컨트롤 이벤트를 선언하고 메인폼에서 호출하여 이벤트가 발생되는지 보여드리겠습니다.

 

먼저 아래와 같이 윈폼 프로젝트를 생성해 주시고, 추가로 UserControl도 같이 생성해 주시기 바랍니다.


윈폼 프로젝트 생성 및 UserControl 생성



먼저, 메인 폼 하나를 생성해 주시고 Panel 컨트롤을 배치하여 Dock = Fill 로 속성을 설정해 주시기 바랍니다.

 

그 다음으로 UserControl 을 생성해 주시기 바랍니다.



생성된 UserControl4개의 버튼 컨트롤을 배치해 주세요.

 

그럼 이제 해당 UserControl을 메인폼에 Panel에 추가하여 해당 버튼들을 클릭 하였을 때, 각각 버튼에 대한 클릭 이벤트들이 발생하도록 예제 코드를 작성해 볼게요.


예제 코드


[UserControl.cs]


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

53

54

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Drawing;

using System.Data;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace EventTest

{

    public partial class UserControlTest : UserControl

    {

        public event EventHandler Button1_Evnet;

        public event EventHandler Button2_Evnet;

        public event EventHandler Button3_Evnet;

        public event EventHandler Button4_Evnet;

        public UserControlTest()

        {

            InitializeComponent();

 

            uiBtn_Btn1.Click += uiBtn1_Click_Event;

            uiBtn_Btn2.Click += uiBtn2_Click_Event;

            uiBtn_Btn3.Click += uiBtn3_Click_Event;

            uiBtn_Btn4.Click += uiBtn4_Click_Evnet;

        }

 

        public void uiBtn1_Click_Event(object sender, EventArgs e)

        {

            if (this.Button1_Evnet != null)

                Button1_Evnet(sender, e);

        }

 

        public void uiBtn2_Click_Event(object sender, EventArgs e)

        {

            if (this.Button2_Evnet != null)

                Button2_Evnet(sender, e);

        }

 

        public void uiBtn3_Click_Event(object sender, EventArgs e)

        {

            if (this.Button3_Evnet != null)

                Button3_Evnet(sender, e);

        }

 

        public void uiBtn4_Click_Evnet(object sender, EventArgs e)

        {

            if (this.Button4_Evnet != null)

                Button4_Evnet(sender, e);

        }

    }

}

 

Colored by Color Scripter

cs

 

[MainForm.cs]


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

53

54

55

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 EventTest

{

    public partial class Form1 : Form

    {

        UserControlTest frm = new UserControlTest();

 

        public Form1()

        {

            InitializeComponent();

 

            this.Load += Load_Form;

 

            frm.Button1_Evnet += Button1_Click_Event;

            frm.Button2_Evnet += Button2_Click_Event;

            frm.Button3_Evnet += Button3_Click_Event;

            frm.Button4_Evnet += Button4_Click_Event;

        }

 

        public void Load_Form(object sender, EventArgs e)

        {

            uiPnl_Main.Controls.Add(frm);

        }

 

        public void Button1_Click_Event(object sender, EventArgs e)

        {

            MessageBox.Show("Button1 Click");

        }

 

        public void Button2_Click_Event(object sender, EventArgs e)

        {

            MessageBox.Show("Button2 Click");

        }

 

        public void Button3_Click_Event(object sender, EventArgs e)

        {

            MessageBox.Show("Button3 Click");

        }

 

        public void Button4_Click_Event(object sender, EventArgs e)

        {

            MessageBox.Show("Button4 Click");

        }

    }

}

 

Colored by Color Scripter

cs

 


실행 결과



위와 같이 UserControl을 메인폼의 Panel에 추가하여 버튼들을 클릭했더니 각각의 버튼에 맞는 이벤트들이 발생돼서 메시지박스가 호출된 것을 확인하실 수 있습니다.

 

이로써, 오늘은 간단히 사용자 정의 컨트롤의 선언된 이벤트를 메인 폼에서 호출하여 이벤트가 발생하는 방법에 대해서 알아 보았습니다.

 

감사합니다.^^


728x90

이 글을 공유하기

댓글

Designed by JB FACTORY