블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

종료 혹은 최소화 버튼을 눌렷을 때 트레이 아이콘만들기~!

 

1.도구상자에서 NotifyIcon을 선택하여 Form에 추가 합니다. 추가 후 소성창의 Icon 속성에 준비해준 Ico 파일을 연결해 줍니다. 여기까지만 하고 실행시켜도 트레이에 우리 프로그램의 아이콘이 보이는 걸 볼 수 있습니다.


2. 트레이에서 마우스 오른쪽 버튼을 눌렀을 경우 나올 메뉴를 위해 ContextMenuStrip도 추가해 줍니다.

 



3. 아이콘 추가
Form에 NotifyIcon을 드레그 하여 추가한다.(시스템에 보여질 아이콘)

4. contextMenuStrip를 드레그 하여 추가한다.(트레이 아이콘의 오른쪽을 클릭하였을 때 보여질 메뉴스트립)
최대화(show)와 종료 버튼을 추가하였다.



5. 트레이 아이콘과 메뉴스트립 연결
폼이 초기에 로드될 때 연결이 되도록 설정하였다.
private void frmMain_Load(object sender, EventArgs e)
        {
            //트레이 아이콘과 컨텍스트메뉴 연결
            Tray.ContextMenuStrip = contextMenuStrip1;
        }
5. 종료 버튼을 눌렸을 때 최소화하기


이렇게 폼의 속성창에서 종료 이벤트를 추가하면 함수가 생성된다
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
 {
            e.Cancel = true;//이벤트 취소
            //둘중 한개 쓰면 됨 이둘을 사용하여 최소화 하면 alt+tab 실행 시 출력이 되지 않음 Start->
             this.Visible = false;
            //this.Hide();
            //둘중 한개 쓰면 됨 이둘을 사용하여 최소화 하면 alt+tab 실행 시 출력이 되지 않음 End<-

            //alt+tab를 눌렸을 때 도 나타나게 하는 법 Start ->
            //  this.WindowState = FormWindowState.Minimized;// 최소화
            //  this.ShowInTaskbar = false; //화면 하단에 나타나는것 해제
            //alt+tab를 눌렸을 때 도 나타나게 하는 법 End <-

   }

6. 트레이 아이콘 클릭시 최대화 하기
private void Tray_DoubleClick(object sender, EventArgs e)
        {
            //둘중 한개 쓰면 됨 이둘을 사용하여 최소화 하면 alt+tab 실행 시 출력이 되지 않음 Start->
             this.Visible = true;
            //this.Show();
            //둘중 한개 쓰면 됨 이둘을 사용하여 최소화 하면 alt+tab 실행 시 출력이 되지 않음 End<-

            //alt+tab를 눌렸을 때 도 나타나게 하는 법 Start ->
            //this.WindowState = FormWindowState.Maximized;// 최소화
            //this.ShowInTaskbar = true; //화면 하단에 나타나는것 해제
            //alt+tab를 눌렸을 때 도 나타나게 하는 법 End <-

      }

그외 트레이 아이콘에 show버튼을 눌렸을 때 함수 처리는 5번과 동일하게 내부 함수 처리하면 되고 exit눌렸을 때는 this.Close();처리를 하여 종료처리를 해주면 된다.!!

TraySample.zip


출처 : http://blog.daum.net/starkcb/60



포비님 예제 처럼 Application.Exit();로 처리하시던지
아래와 같이 처리하실수도 있습니다.

        private bool bNotClose = true;
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (bNotClose)
            {
                e.Cancel = true;    // 이벤트 취소
                Visible = false;    // 폼을 표시하지 않는다.
            }
            else
            {
                // 실제 종료시 코드를 처리(DB 세션 종료등..)
            }
        }
        private void exitToolStripMenuItem_Click(object sender, EventArgs e)
        {            
            notifyIcon1.Visible = false; //트레이아이콘 없앰
            bNotClose = false; // 실제 종료가 되도록 변경
            Close();

            //프로세스 종료
        //    Application.Exit();
        }
반응형
Posted by blueasa
, |