트레이 아이콘 만들기
종료 혹은 최소화 버튼을 눌렷을 때 트레이 아이콘만들기~!
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();
}
'Programming > C#' 카테고리의 다른 글
C#에서 전역변수 사용법 (폼간에) (0) | 2010.07.22 |
---|---|
레지스트리 값 읽고, 쓰기 방법 (0) | 2010.07.22 |
.net에서 시스템 트레이아이콘 예제 전체공개 (0) | 2010.07.22 |
[Link] C# 관련 사이트 (0) | 2010.07.22 |
C# 진법전환 (0) | 2010.07.22 |