2009-02-05 4 views
1

폼에 동적으로 레이블을 추가하고 ContextMenuStrip 컨트롤을 동적으로 추가하고 있습니다. label.ContextMenuStrip 속성을 사용하여 레이블을 연결하거나 레이블에 이벤트 핸들러를 추가하여 마우스 오른쪽 버튼 클릭에 응답하고 컨텍스트 메뉴를 표시하면 이상한 동작을 보게됩니다.ContextMenuStrip 동작 문제

1) 메뉴가 수행하는 작업 마우스 포인터 옆에 나타나지 않으면 아래로 그리고 오른쪽으로 옵셋됩니다. 이는 폼이 아닌 상위 컨트롤 (그림 컨트롤)에있는 레이블의 위치와 관련이있는 것으로 보입니다.

2) 메뉴가 아닌 다른 것을 클릭하면 메뉴가 사라지지 않습니다.

내가 여기에 놓친 아이디어가 있습니까?

덕분에, 앤디

+1

ContextMenu를 어떻게 표시하는지 코드를 게시 할 수 있습니까? ShowContextMenu 메서드는 몇 가지 오버로드가 있으며 잘못된 것만 사용할 수 있습니다. – BFree

답변

1

나는 그것을 밖으로했다. 우선, 레이블 컨트롤 컬렉션에 컨트롤을 추가하여 위치 컬렉션 문제를 수정 한 폼 컬렉션으로 변경했습니다. 나는 왜 메뉴가 닫히지 않을지 결코 이해하지 못했다.

궁극적으로 나는 폼에 메뉴의 정적 인스턴스를 추가 한 다음 해당 레이블이있는 인스턴스에 label.ContextMenuStrip 속성을 연결했습니다. 모든 것이 그 접근법에 잘 맞습니다.

레이블 컨트롤의 태그를 사용하여이를 클릭 이벤트 처리기로 식별했습니다.