첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
유용한 소스 코드가 있으면 icodebroker@naver.com으로 보내주시면 감사합니다.
블로그 자료는 자유롭게 사용하세요.

■ 트레이 아이콘 사용하기

----------------------------------------------------------------------------------------------------

 


TestProject.zip


Program.cs

 

 

using System;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 프로그램

    /// </summary>

    static class Program

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Static

        //////////////////////////////////////////////////////////////////////////////// Private

 

        #region 프로그램 시작하기 - Main()

 

        /// <summary>

        /// 프로그램 시작하기

        /// </summary>

        [STAThread]

        static void Main()

        {

            Application.EnableVisualStyles();

            Application.SetCompatibleTextRenderingDefault(false);

            Application.Run(new TestApplicationContext());

        }

 

        #endregion

    }

}

 

 

TestApplicationContext.cs

 

 

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 테스트 애플리케이션 컨텍스트

    /// </summary>

    public class TestApplicationContext : ApplicationContext

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// Configuration 메뉴 항목

        /// </summary>

        private MenuItem configurationMenuItem;

 

        /// <summary>

        /// Exit 메뉴 항목

        /// </summary>

        private MenuItem exitMenuItem;

 

        /// <summary>

        /// 알림 아이콘

        /// </summary>

        private NotifyIcon notifyIcon;

 

 

        /// <summary>

        /// 구성 폼

        /// </summary>

        private ConfigurationForm configurationForm;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - TaskTrayApplicationContext()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public TestApplicationContext()

        {

            this.configurationMenuItem = new MenuItem();

 

            this.configurationMenuItem.Name = "configurationMenuItem";

            this.configurationMenuItem.Text = "Configuration";

 

 

            this.exitMenuItem = new MenuItem();

 

            this.exitMenuItem.Name = "exitMenuItem";

            this.exitMenuItem.Text = "Exit";

 

 

            this.notifyIcon = new NotifyIcon();

 

            this.notifyIcon.Icon        = TestProject.Properties.Resources.tray;

            this.notifyIcon.ContextMenu = new ContextMenu(new MenuItem[] { configurationMenuItem, exitMenuItem });

            this.notifyIcon.Visible     = true;

 

 

            this.configurationForm = new ConfigurationForm();

 

 

            this.configurationMenuItem.Click += configurationMenuItem_Click;

            this.exitMenuItem.Click          += exitMenuItem_Click;

            this.notifyIcon.DoubleClick      += notifyIcon_DoubleClick;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Configuration 메뉴 항목 클릭시 처리하기 - configurationMenuItem_Click(sender, e)

 

        /// <summary>

        /// Configuration 메뉴 항목 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void configurationMenuItem_Click(object sender, EventArgs e)

        {

            if(this.configurationForm.Visible)

            {

                this.configurationForm.Focus();

            }

            else

            {

                this.configurationForm.ShowDialog();

            }

        }

 

        #endregion

        #region Exit 메뉴 항목 클릭시 처리하기 - exitMenuItem_Click(sender, e)

 

        /// <summary>

        /// Exit 메뉴 항목 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void exitMenuItem_Click(object sender, EventArgs e)

        {

            this.notifyIcon.Visible = false;

 

            Application.Exit();

        }

 

        #endregion

        #region 알림 아이콘 더블 클릭시 처리하기 - notifyIcon_DoubleClick(sender, e)

 

        /// <summary>

        /// 알림 아이콘 더블 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void notifyIcon_DoubleClick(object sender, EventArgs e)

        {

            if(this.configurationForm.ShowMessage)

            {

                MessageBox.Show("Information", "Hello World", MessageBoxButtons.OK, MessageBoxIcon.Information);

            }

        }

 

        #endregion

    }

}

 

 

ConfigurationForm.cs

 

 

using System;

using System.Windows.Forms;

 

namespace TestProject

{

    /// <summary>

    /// 구성 폼

    /// </summary>

    public partial class ConfigurationForm : Form

    {

        //////////////////////////////////////////////////////////////////////////////////////////////////// Field

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region Field

 

        /// <summary>

        /// 메시지 표시 여부

        /// </summary>

        private bool showMessage = true;

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Property

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 메시지 표시 여부 - ShowMessage

 

        /// <summary>

        /// 메시지 표시 여부

        /// </summary>

        public bool ShowMessage

        {

            get

            {

                return this.showMessage;

            }

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor

        ////////////////////////////////////////////////////////////////////////////////////////// Public

 

        #region 생성자 - ConfigurationForm()

 

        /// <summary>

        /// 생성자

        /// </summary>

        public ConfigurationForm()

        {

            InitializeComponent();

 

            Activated               += Form_Activated;

            this.applyButton.Click  += applyButton_Click;

            this.cancelButton.Click += cancelButton_Click;

        }

 

        #endregion

 

        //////////////////////////////////////////////////////////////////////////////////////////////////// Method

        ////////////////////////////////////////////////////////////////////////////////////////// Private

 

        #region 폼 활성화시 처리하기 - Form_Activated(sender, e)

 

        /// <summary>

        /// 폼 활성화시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void Form_Activated(object sender, EventArgs e)

        {

            this.showMessageCheckBox.Checked = this.showMessage;

        }

 

        #endregion

        #region Apply 버튼 클릭시 처리하기 - applyButton_Click(sender, e)

 

        /// <summary>

        /// Apply 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void applyButton_Click(object sender, EventArgs e)

        {

            this.showMessage = this.showMessageCheckBox.Checked;

 

            Close();

        }

 

        #endregion

        #region Cancel 버튼 클릭시 처리하기 - cancelButton_Click(sender, e)

 

        /// <summary>

        /// Cancel 버튼 클릭시 처리하기

        /// </summary>

        /// <param name="sender">이벤트 발생자</param>

        /// <param name="e">이벤트 인자</param>

        private void cancelButton_Click(object sender, EventArgs e)

        {

            Close();

        }

 

        #endregion

    }

}

 

----------------------------------------------------------------------------------------------------

Posted by 사용자 icodebroker
TAG

댓글을 달아 주세요