'팝업띄우기'에 해당되는 글 1건

  1. 2020.06.01 [C#] 팝업창, 새로운 Form 열기, 모달vs모달리스

WinApp이나 Explorer에서 항상 해보고 싶던 팝업 띄우기.

 

제공하는 라이브러리가 있을테니 별것 아닐거라 생각은 했지만 실제로 해보게 되니

그 또한 즐겁구나.

 

1. 팝업을 띄울 버튼 생성

 

모달, 모달리스 'Button' 생성

 

2. 팝업으로 보여줄 새로운 Form 추가

 

Project > Add Windows Form

새로운 Form2를 생성

 

3. 팝업창 만들기

 

 

4. 팝업을 띄우는 방법

모달 모달리스
1. showDialog()
2. 새로운 Form이 프로그램의 제어권을 독점.
3. 다른 작업 불가능.
4. 중요한 메시지를 표시할 때 사용.
1. show()
2. 새로운 Form이 프로그램의 제어권을 독점하지 않음.
3. 다른 작업 가능.
4. 알림 또는 정보를 표시하는데 사용.
using System.Windows.Forms;

namespace WinFormTest
{
	public partial class Form1 : Form
    {
    	public Form1()
    	{
            InitializeComponent();
        }
        
        // 모달
        private void button1_Click(object sender, EventArgs e) 
        {
            Form2 modal = new Form2();
            modal.showDialog()
        }
        
        //모달리스
        private void button2_Click(object sender, EventArgs e)
        {
            Form2 modalless = new Form2();
            modalless.show();
        }
    }
}

 

5. 창 닫기

 

팝업 화면에 닫기 버튼이 있다면...

using System.Windows.Forms;

namespace WinFormTest
{
    public partial class Form2: Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Close();
        }
    }
}

 

  • 그럼...팝업의 닫기 버튼으로 Form1까지 종료시킬 수 있을까..?

     - 이벤트를 추가하면 된다는데...?

 

6. 원하는 위치에 보이고 싶을때

 

사용자 입장에서 볼 때, 상위(부모) Form의 가운데에 팝업을 띄우는 것이 가장 보기 좋을 것이다.

방법...?

C#에서 제공해 주는 라이브러리가 없다면....

상위(부모) Form의 크기와 팝업 Form의 크기를 구해서 위치를 변경해주는 수밖에...

이것 저것 해보다 보니 C#에서 제공되는 쉬운 방법이 있었다.

private void button1_Click(object sender, EventArgs e) 
{
    Form2 modal = new Form2();
    modal.StartPosition = FormStartPosition.CenterParent; // 부모 Form의 가운데
    // modal.StartPosition = FormStartPosition.CenterScreen; // 모니터의 가운데
    modal.showDialog()
}

와우...정말 손쉽게 이런 기능을...

C언어 쓰던 자괴감이 든다...

'C#' 카테고리의 다른 글

[C#] delegate, 폼 간의 DATA 공유  (2) 2020.06.20
[C#] MAC Address 가져오기  (0) 2020.06.15
[C#] Class, 클래스, 구조체  (0) 2020.06.08
[C#] 값을 표현하기 위한 방법  (0) 2020.05.28
[C#] 눈에 보이는 재미  (0) 2020.05.24
Posted by [ 브랜든 ]
,