일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Cell Border Style
- 공공 데이터 포털
- 경기도 버스
- eventargs
- C# 파일 암/복호화
- MDB Connect
- solid
- 버스 API
- C# MDB Handle
- Excel Cell Format
- eventhandler
- 시
- 경기도 버스정보시스템
- c#
- DrawRectangle
- C# MDB
- NUnit
- Winform
- TDD
- 객체지향
- WPF
- DrawEllipse
- Json.NET
- GDI+
- MDB Select
- 디자인 패턴
- MVC
- JSON
- sqlite3
- delegate
- Today
- Total
White Whale Studio
[WPF] Tray (트레이) 생성하고 조작하기! 본문
거짓말 안보태고 약 3~40분을 제대로된 코드를 찾기위해 웹 서핑을 했습니다..ㅠㅠ
각설하고 바로 코드로 들어가보죠.
검색결과 Tray는 일단 Window Form 기반에서 돌아가는게 기본입니다.
그러나 WPF 또한 C#으로 되어있어 윈폼과 그 근간을 같이하니 당연히 호환이 되겠죠.
따라서, 제가 사용한 프로젝트는 Windows Form 기반 프로젝트가 아닙니다!! WPF 응용 프로그램 기반 프로젝트이니 꼭 유의하시고 참조하세요!
일단은 그래도 윈폼기반인지라 참조파일에서 추가를 해주셔야됩니다.
각 프로젝트의 참조 - 참조 추가 - System.Windows.Forms 를 추가해주시면 됩니다.
아 물론 코드에서도 using 구문을 사용해서 추가해주셔야 되구요.
추가하신뒤의 코드는 다음과 같습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WinForms = System.Windows.Forms;
namespace TrayTest
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private System.Windows.Threading.DispatcherTimer timer;
public System.Windows.Forms.NotifyIcon notify;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
try
{
//--------- 이 부분은 ContextMenu라고 해서 메뉴 패널이 등장하도록 설정하는 부분입니다.
//보통 트레이에서 오른쪽 클릭하면 나타나는 기능이라고 보시면 되죠. 아래의 코드와 같이 아이템들을 각각
//선언하고 각 아이템별로 기능을 부여하시면 됩니다.
System.Windows.Forms.ContextMenu menu = new System.Windows.Forms.ContextMenu();
System.Windows.Forms.MenuItem item1 = new System.Windows.Forms.MenuItem();
System.Windows.Forms.MenuItem item2 = new System.Windows.Forms.MenuItem();
menu.MenuItems.Add(item1);
menu.MenuItems.Add(item2);
item1.Index = 0;
item1.Text = "프로그램 종료";
item1.Click += delegate(object click, EventArgs eClick)
{
this.Close();
};
item2.Index = 0;
item2.Text = "프로그램 설정";
item2.Click += delegate(object click, EventArgs eClick)
{
this.Close(); // 현재는 두가지 기능모두 닫도록 해 뒀지만 필요에 맞게 바꾸시면 됩니다.
};
notify = new System.Windows.Forms.NotifyIcon();
notify.Icon = TrayTest.Properties.Resources.ICON; // 아이콘 설정부분입니다. 프로젝트에 있는 리소스를 가지고 옵니다. 검색결과로는 Uri를 사용할수 없다고 하니 부득이하게 리소스에 추가하신 뒤 사용을 하셔야 할 것같습니다.
notify.Visible = true;
notify.DoubleClick +=
delegate(object senders, EventArgs args)
{
this.Show();
this.WindowState = WindowState.Normal;
};
notify.ContextMenu = menu;
notify.Text = "Test";
timer = new System.Windows.Threading.DispatcherTimer();
timer.Interval = new TimeSpan(0, 0, 2);
timer.Tick += new EventHandler(timer_Tick);
timer.Start();
}
catch (Exception ee)
{
}
}
private int c=0;
// ---- 이 부분은 트레이에서 팝업처럼 뿅 하고 나타나는 팁 기능을 구현하는 부분입니다.
// 코드를 보시면 대충 아시겠지만 쓰레드를 사용해서 팁을 띄워주는 기능을 합니다. 필요에 따라서 바꾸시면 되겠습니다.
void timer_Tick(object sender, EventArgs e)
{
notify.BalloonTipTitle = "Title";
notify.BalloonTipText = "BalloonTip Text";
notify.ShowBalloonTip(1000);
++c;
}
protected override void OnStateChanged(EventArgs e)
{
if (WindowState.Minimized.Equals(WindowState))
{
this.Hide();
}
base.OnStateChanged(e);
}
}
}
제대로 작성이 되었다면 위와 같이 출력됩니다.
아.. 인터넷 검색중에 msdn에 기본적인 내용이 있던데요 notifyicon로 검색해보시면 될것같습니다.
'IT Engineering > .Net (WPF)' 카테고리의 다른 글
[WPF] DataGrid 의 Combobox 컬럼 사용과 선택한 Cell 정보 읽기 (0) | 2013.09.24 |
---|---|
[WPF] XAML에서 자주 사용하는 것들 (0) | 2013.08.29 |
[WPF] MSSQL Stored Procedure Connection / WPF - 프로시저와의 연결 (0) | 2013.08.06 |
[WPF] XML 작성 및 자동 줄바꿈 옵션 적용하기. & XML-Linq 사용 (0) | 2013.07.25 |
WPF - XML 데이터 / 파일의 TreeView 동적 출력 (0) | 2013.07.16 |