폼 닫을때 세이브 메소드를 넣고 싶어서
출처: http://bytes.com/forum/thread256124.html
Alt+F4 버튼으로 폼을 닫아버리면 안 되도록 설정해야 하는 경우가 종종 있습니다.
최근에 프로그래밍을 하다보니 멀티쓰레딩으로
작업하다가 Alt+F4버튼을 눌러서 닫아버리면 오류가 나더군요..
왜 오류가 날까? 라는 생각보다 Alt+F4 버튼을 막아야 겠군!
이라는 생각이 먼저 들더군요 ㅡㅡ;
그래서 여러 가지 생각을 해 봤는데요..
1. 예전에 쓴 방법 중 하나는 다른 폼으로 무조건 포커스를 옮기는
것이었습니다.
그 때는 하나의 폼에만 포커스가 있으면 되는 경우였으니까 가능했지만. 포커스를 유지하면서 Alt+F4를 막으려면 다른
방법을 써야 했죠~
많은 분들이 사용하는 방법 중 하나는..
2. OnClosing() 메써드를 오버라이드 해서 닫히는 이벤트를 Cancel
시키는 방법입니다.
이 방법의 단점은 Close() 메써드로 창을 닫으려고 해도 안 닫힌다는 것입니다.
즉 창을 닫을 수가 없다는 것???
ㅡㅡ;;
정말 닫을 수 없는지 고민해 보지는 않아서 확신은 못 하지만.. 일단 Close()로는 안 닫히는 것
같더군요
3. 그래서 KeyDown 이벤트를 사용하는 방법을
추천합니다!
우선은 KeyPreview 속성을 true로 설정해
주시고
KeyDown 이벤트 안에.. Alt+F4 가 눌릴 때 e.Handled = true;로 설정해 주기만 하면
됩니다.
e.Handled = true; 의 기능은... 이미 키가 눌린 이벤트가 다 처리되었으니 신경쓰지 말아라~ 라는
뜻입니다.
{
if (e.Alt && e.KeyCode == Keys.F4)
e.Handled = true;
}
이렇게 적어주면 되겠죠? ㅎ
'2_ 바삭바삭 프로그래밍 > C# and Visual C++' 카테고리의 다른 글
[C#] Console.Writeline 좌/우 정렬, 문자 채우기, 소숫자리 출력 (0) | 2013.04.04 |
---|---|
[C#] OpenCV를 이용한 얼굴검출(Haar) 알고리즘 (0) | 2013.03.16 |
[C#] textbox 에서 ctrl + a 했을때 전체선택 (0) | 2013.02.27 |
[C#] 프로그램을 시작할때 (파일출력 프로토타입) (0) | 2013.02.14 |
[C#] 윈폼기반 프로그래밍을 할때 Invoke() 이쁘게쓰기! (0) | 2013.02.08 |