2009-08-15 2 views
1

특정 폴더의 모든 파일을 포함하는 MenuItem이 있습니다.C# Contextmenu Popup 이벤트에 채워지는 경우 점프

menuitem은 자체 팝업 이벤트 (System.IO.Directory.GetFiles 사용)로 채워지지만 화면의 오른쪽 하단 구석에 너무 가깝거나 (보이는 것처럼) 있으면 채워지는 동안 화면에서 더 위로 올라갑니다 .

Popup 이벤트가 발생하기 전에 채우는 경우 메뉴 항목이 일반적인 위치에서 열립니다.

폴더의 내용을 최신 상태로 유지하려면 팝업 이벤트에 채워야합니다.

Popup 이벤트에 메뉴 항목이 채워진 경우 메뉴 항목이 이동하는 이유는 무엇이며 어떻게 피할 수 있습니까?

+0

다양한 브라우저에서이 동작을 보았습니까? – jim

+0

죄송합니다, 충분히 지정하지 않았습니다. 그것은 Windows 응용 프로그램에서 C#입니다. 컨텍스트 메뉴는 트레이 아이콘에 연결되어 있습니다 (즉, 대부분의 경우 화면의 오른쪽 하단에 표시되므로 성가신 문제입니다). –

+1

몇 가지 샘플 코드를 추가하여 문제를 표시 할 수 있습니까? 내가 여기에서 그것을 시도 할 때, 내가 말할 수있는 한 제대로 작동한다. 상황에 맞는 메뉴가 채워지는 동안 화면 업데이트가 발생하지 않으며 Popup 처리기가 완료 될 때까지 메뉴가 표시되지 않습니다. – JimG

답변

1

조금 생각한 후에 팝업 메뉴를 업데이트하는 것이 가장 좋은 방법인지 잘 모르겠습니다. 시작시 메뉴를 한 번 빌드하고 FileSystemWatcher (또는 다른 위치가있는 경우 몇 개)를 사용하여 변경 사항을 알리고 필요에 따라 메뉴를 업데이트하십시오.

0

DataGridView에서 동일한 문제가있었습니다.

나는 팝업 메뉴를 사용하여 사용자가 그리드를 채울 때 가장 일반적인 입력 중에서 선택할 수있게했습니다. 클릭 한 셀의 내용에 따라 옵션이 약간 다를 수 있습니다. 이 컨텍스트 메뉴가 점프하고 깜박입니다. 내가 마지막으로 메뉴를 채우는 (난 그냥이 속성을 제로 의미) 내 DataGridView에

2의 ContextMenu 속성을 재설정

1이었다 무슨 짓을했는지, 몇 가지 방법을 시도 DataGridView에의 CellMouseDown 이벤트 대신 상황에 맞는 메뉴의 오프닝 이벤트

3. 단순히이 특정 셀

myDataGridView[column, row].ContextMenuStrip = myPopUpMenu; 

에이 메뉴를 할당 그리고 그것의, (CellMouseDown 여전히)를 채우는 후. 원하지 않는 시각 현상없이 잘 작동;).