Realman's World

ContextMenuStrip 쉽게 사용하기 본문

Language/C#

ContextMenuStrip 쉽게 사용하기

리얼맨 2012. 5. 24. 13:36

시스템 개발 중 메신저처럼 TrayIcon을 사용하게 될 일이 생겼다.

 

TrayIcon 추가 후에 마우스 우클릭시 ContextMenuStrip을 생성시켜서 특정 작업을 하도록 기능을 추가하였다.

 

잘 된다 싶었는데 버그가 발생했다.

다른 프로그램들은 ContextMenuStrip이 생성되고 화면 아무곳이나 클릭하면 사라지는데 내가 개발한 것은 사라지지 않았다.

다른 프로그램이 된다면 내가 잘못 사용하고 있다는 생각이 들어 이래저래 ContextMenuStrip의 속성을 변경해 봤지만 달라지지 않았다.

이때까지의 내 소스는 아래와 같다.

        private void trayHitops_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                cmsTrayMenu.Show(MousePosition.X, MousePosition.Y);
            }
            else
            {
                cmsTrayMenu.Visible = false;
            }
        }

즉 TrayIcon의 마우스클릭 이벤트에서 ContextMenuStrip을 생성하고 닫히게 했던 것이다.

검색을 하면서 그 동안 삽질을 하고 있었다는 것을 알게 되었다.

그것은 C#에서는 Control마다 ContextMenuStrip을 바인딩할 수 있다는 것이다.

한줄이면 끝난다.

trayHitops.ContextMenuStrip = cmsTrayMenu;

수정하자 마자 테스트했더니 자동으로 마우스 우클릭했을 때 나타나고 다른 곳을 클릭하니 자동을 사라졌다.

역시 아직까지 많이 모자람을 느끼며 겸손하게 된 하루였다.

Comments