본문 바로가기

개발121

[C#]Alt+F4로 폼 닫는 것 막기 Alt+F4 버튼으로 폼을 닫아버리면 안 되도록 설정해야 하는 경우가 종종 있습니다. 최근에 프로그래밍을 하다보니 멀티쓰레딩으로 작업하다가 Alt+F4버튼을 눌러서 닫아버리면 오류가 나더군요.. 왜 오류가 날까? 라는 생각보다 Alt+F4 버튼을 막아야 겠군! 이라는 생각이 먼저 들더군요 ㅡㅡ; 그래서 여러 가지 생각을 해 봤는데요.. 1. 예전에 쓴 방법 중 하나는 다른 폼으로 무조건 포커스를 옮기는 것이었습니다. 그 때는 하나의 폼에만 포커스가 있으면 되는 경우였으니까 가능했지만. 포커스를 유지하면서 Alt+F4를 막으려면 다른 방법을 써야 했죠~ 많은 분들이 사용하는 방법 중 하나는.. 2. OnClosing() 메써드를 오버라이드 해서 닫히는 이벤트를 Cancel 시키는 방법입니다. 이 방법의 단.. 2008. 9. 27.
[C#]투명한 폼에서의 이벤트가 윈도우 버전별로 다르게 작동한다?? 오늘 겪은 황당한 사건입니다. 폼을 겹치게 해 놓고 위에 오는 폼은 투명하게 해 두었습니다. 위에 오는 폼은 아주 작은 버튼만 가지고 투명하게 숨어 있다가 마우스가 그 위로 지나가면 짠! 하고 나타나도록 설계를 했습니다. 코딩은 XP에서 했죠... Windows XP 에서는 투명하게 만든 폼(TransparencyKey, Opacity) 위에서는 이벤트가 작동하지 않습니다. 둘 중 어떤 방법을 써도 말이죠 (저는 TransparencyKey를 사용했습니다.) 그래서 배경이 되는 폼에 MouseMove이벤트를 만들어서 위에 오는 폼의 영역에 왔는지 체크를 하도록 했지요 그렇게 잘 만들어서 노트북에서 돌려 봤습니다. (노트북은 Vista) 그랬더니... 어라? 안됩니다 ㅡㅡ; 다시 XP 에서 하니까 또 됩니.. 2008. 9. 27.
[C#]Alt+Tab을 눌러도 보이지 않게 해보자! Form 에서 다른 Form 을 생성하는 경우 작업표시줄에도 표시되고 Alt+Tab을 누르면 나오는 화면에도 나옵니다. 이것을 없애는 방법이 여러가지 있습니다. ShowDialog() 로 호출하는 방법도 있고, FormBorderStyle을 FixedToolWindow 또는 SizableToolWindow 로 지정하면 Alt+Tab 화면에 보이지 않습니다. 하지만 이 방법들은 무언가 꺼림찍하죠? 다들 특정한 목적으로 쓰도록 만든 것이기 때문에 일반 폼에 적용하기는 무리가 있습니다. 제가 만드는 App의 경우에는 FormBorderStyle을 None으로 설정하고, 소유하는 폼에도 접근해서 작업을 하도록 만들었기 때문에 위의 방법을 쓸 수가 없더군요 그래서 열심히 구굴링을 해서 찾아낸 방법! protect.. 2008. 9. 27.
[C#]메서드 숨기기 이번에는 책에도 많이 나오고 다들 알고는 있지만 잘 쓰지 않아서 가끔 실전에서 생각이 나지 않을 법한 것을 적어보겠습니다. 메서드를 숨긴다? 무슨 말일까요? 일단! 객체지향 언어인 C#에서 클래스를 상속할 수 있다는 것은 다들 아시죠? Form 클래스를 예로 들면.. public class NewForm : System.Windows.Forms.Form { } 이런 식으로 상속할 수 있습니다. 이 경우 Form 클래스에 정의된 다양한 메서드를 사용할 수 있죠. new NewForm().Show(); 2008. 9. 27.