퇴근5분전


훈스닷넷에서 NotifyIcon 활성화 하고.

마우스 왼쪽, 오른쪽 버튼을 각각 다른 메뉴를 주고 싶다고 하신분께 올린 답글임.

몇가지 방법을 찾아봤는데 애매 했었으나...

ContextMenuStrip.Show   에서 해결책이 하나 있고.

여기에 부합되게 MousePosition 이란 값을 이용할수 있었다.

NotifyIcon 의 mouseEvt 에  이벤트 매개변수를 이용해봤지만 원하는곳에 Show가 안된다!

그래서 MousePosition 을 이용해서 마우스 위치값을 사용함. 아주 잘된다!









초보시라니 초간단.... 방법을 소개 해드리죵...
 
구성은 Form 1개
 
NotifyIcon 1개
 
ContextMenuStrip 2개 (Left용, Right용 )
 
주의 NotifyIcon에 ContextMenuStrip 속성에는 바인딩 하지 않습니다.
 
 
 
아래소스 대로 돌려보세용... 원하시는데로~~ 될꺼임돵.
 
 
 
 
 public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Load += new EventHandler(Form1_Load);
            this.Shown += new EventHandler(Form1_Shown);
        }
        void Form1_Shown(object sender, EventArgs e)
        {
            this.Hide();
        }
        void Form1_Load(object sender, EventArgs e)
        {
       //this.notifyIcon1.ContextMenuStrip = contextMenuStrip1; 바인딩하지 않는다!
            this.notifyIcon1.MouseDown += new MouseEventHandler(contextMenuStrip1_MouseDown);
        }
        void contextMenuStrip1_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                contextMenuStrip1.Show( MousePosition );
            }
            else if( e.Button == MouseButtons.Right)
            {
                contextMenuStrip2.Show(MousePosition);
            }
        }
        private void leftMouseDownToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Left Click");
        }
        private void rightMouseToolStripMenuItem_Click(object sender, EventArgs e)
        {
            MessageBox.Show("RightClick");
        }
    }