버튼을 클릭했을시 폼간에 넘어가는 부분
Form1 에서 Form2 로 넘어가는 상황입니다.
버튼 함수 안에 집어넣을 소스
this.Visible=false; // 현재 폼 보이지 않게 하기
Form2 form2 = new Form2(); // 새폼 생성
form2.Owner = this; // 오너 넘기기
form2 .Show(); //폼 보여주는 부분
실행시켜보면 다른폼으로 넘어가는 부분을 볼 수 있습니다.
그러나 이게 다른폼으로 넘어가면 프로세스가 제대로 종료되지 않습니다.
Visible 에서 보이지만 않게 하고 종료를 시킨것이 아니기 때문인데요,
오른쪽 위의 빨간 엑스버튼을 누르면 종료가 되게 하면 문제가 해결이 됩니다.
왼쪽이 속성창인데요, 속성창에 번개모양을 클릭하면 이벤트 툴이 나오는걸 볼수 있습니다.
그곳에서 FormClosing 이라는 부분을 더블클릭하면 해당 소스코딩부분으로 넘어갑니다.
이렇게 위와 같은 소스코딩을 하면 프로세스가 모두 정상적으로 종료가 됩니다.
여기서 FormClosing 과 FormClosed의 차이점은
FormClosing 은 폼을 닫기 전에 수행할 것을 명령하는 것이고
FormClosed는 폼을 닫고 나서 수행할 것을 명령하는 것입니다.
예를들면 전자는 종료전 저장하는것을 묻는다라던가 위와 같이 모든 폼을 종료시킨다던가 하는 것이고
후자는 프로그램을 종료하고 나서 이용해주셔서 감사하다는 것이라던가 종료되었다고 알림을 한다던가 종료하고 나서 무언가를 할 때 사용한다고 생각하면 되겠습니다.
------------------------------------------------------------------------------------------------------
추가글 ) 위의 글처럼 하니까..안되길래 또 찾아보았다.
위와 같이 하면 이벤트를 써서 닫기를 안해도 된다.
출처: http://thinkerodeng.tistory.com/142 [Thinker]
아마 ShowDialog에서 폼을 잡고있다가, 종료가 될 때, Login폼으로 돌아와서 this.Close()를 하는 것 같다
visible = false 나 Hide를 안해주면 Login창이 그대로 떠있는 것으로 봤을때, 아직 저 버튼 클릭이 다 처리되지 않고, 중간에 room폼이 잡고있어서 그런 것 같다!
잡고있어야하기때문에, Show로 보여주면 안되고, ShowDialog로 불러와야 폼이 잡혀있다. 안그러면 this.Close()의 영향으로 인해 그냥 꺼지더라..
그래서 내가 이번에 로그인폼을 만들면서 사용한 로그인 버튼 클릭은
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | private void Btn_Login_Click(object sender, EventArgs e) { if (TB_ID.Text == id && TB_PW.Text == pw) { this.Visible = false; Form1 frm1 = new Form1(); frm1.Owner = this; frm1.ShowDialog(); this.DialogResult = DialogResult.OK; this.Close(); } else { MessageBox.Show("아이디와 비밀번호를 확인해 주십시오.","로그인 실패"); } } | cs |
이렇게 응용하였다.
'프로그래밍 > C#' 카테고리의 다른 글
[C#] BigInteger (0) | 2017.02.03 |
---|---|
[C#] ListView 가로 스크롤 세로 스크롤로 바꾸기 (0) | 2017.02.03 |
[C#]DLL 사용하기 (0) | 2016.10.11 |
[C#]DLL 만들기 (0) | 2016.10.11 |
[C#]C# 과 오라클 데이터베이스 연동 방법 (1) | 2014.08.28 |