카테고리 없음

C#에서 윈폼 프로젝트 실행시 폼 숨기기

great-artist 2019. 2. 27. 15:32
반응형

 윈폼으로 만든 프로젝트를 트레이 아이콘에 숨기고 트레이 아이콘을 더블 클릭했을때만 화면에 표시되도록 해야 하는 작업을 했다. 해결하는 과정중에 발생한 문제까지 정리 한다.


폼의 Load이벤트 처리부에서 Hide() 호출 하기

Occurs before a form is displayed for the first time.

Load이벤트 처리시기에는 폼이 아직 화면에 표시된게 아니라서 Hide()를 호출해도 폼이 보여진다.


폼의 Shown 이벤트에서 Hide() 호출 하기

Occurs whenever the form is first displayed.

이 보여지자 마자 호출 되기때문에 일시적으로 화면에 표시된다.


SetVisibleCore 오버라이드 하기

Sets the control to the specified visible state

아래처럼 최초 한번은 강제로 숨기도록 했다. 하지만 폼의 Load 이벤트가 발생하지 않는다. 최초 화면에 보여질때만 윈폼을 Load하는것 같다. 

        private bool firstVisibleIgnored = false;
        protected override void SetVisibleCore(bool value)
        {
            if (firstVisibleIgnored == false)
            {
                firstVisibleIgnored = true;
                base.SetVisibleCore(false);
                return;
            }
 
            base.SetVisibleCore(value);
        }


투명도로 제어하기

폼의 생성자에서 투명도를 0으로 해서 화면에서 보이지 않게 한다.
            WindowState = FormWindowState.Minimized;
            ShowInTaskbar = false;
            Opacity = 0;
화면에 보여질 시점에서 아래와 같이 호출하면 된다.
            WindowState = FormWindowState.Normal;
            ShowInTaskbar = true;
            Opacity = 1;

완료!!



 



반응형