WinApp이나 Explorer에서 항상 해보고 싶던 팝업 띄우기.
제공하는 라이브러리가 있을테니 별것 아닐거라 생각은 했지만 실제로 해보게 되니
그 또한 즐겁구나.
1. 팝업을 띄울 버튼 생성
2. 팝업으로 보여줄 새로운 Form 추가
Project > Add Windows Form
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 |