본문 바로가기
C#/Winform

프로그램 실행 시 폼 출력 안되게 하기.

by HyunS_ 2019. 1. 17.

프로그램 실행 시 폼이 출력 안되고 트레이 아이콘만 출력되게 해야할 경우가 있다.


그래서 처음에 시도해본 방법이


폼 생성되었을 때 Visible 값을 fasle로 하였는데 이렇게 했음에도 그대로 화면이 출력 되었다.(opacity = 0 으로 하는 방법도 있으나 이 방법은 제외 하였다.)


찾아보니 Visible 속성이 매우 중요한 속성이라 하면서 실제로는 OnLoad()가 실행된다고 한다.


그래서 Visible 속성을 아무리 바꾸려는 시도가 무시된다고 한다.



그래서 찾아보니 SetVisibleCore 를 사용하여 폼 출력 안되게 하였다.


문제는 이렇게 하니 종료할 때 아래의 동작이 한번 더 되는 문제가 발생하였다. 찾다보면 해결 방법이 있겠지만 잠시 테스트 해본거라 아


직은 모르겠다.


1
2
3
4
protected override void SetVisibleCore(bool value)
{
    base.SetVisibleCore(value);
}
cs



그 다음에 찾아보고 적용한게 기존의 메인폼을 뒤로 두고 새로 만들 폼을 메인으로 만드는 방법이다.


ApplicationContext를 상속 받는 클래스를 만들고 그 클래스를 메인으로 두면 된다.


그리고 나서 새로 만든 클래스에서 트레이 아이콘이나 컨텍스트 메뉴를 추가 하고 옵션으로 기존 메인폼을 보여주게 하면 된다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class TraySample : ApplicationContext
{
    public TraySample()
    {
        // 알림 영역에서의 아이콘의 값들을 설정합니다.
        notifyIcon.Visible = true;
        notifyIcon.Icon = null;
        notifyIcon.ContextMenuStrip.Items.Add("Show");
        notifyIcon.ContextMenuStrip.Items.Add("Exit");
 
        // 이벤트를 생성합니다.
        notifyIcon.ContextMenuStrip.ItemClicked += ContextMenuStrip_ItemClicked;
    }
 
    NotifyIcon notifyIcon = new NotifyIcon();
}
cs


728x90

댓글