2009-07-17 2 views
3

난은 Gtk는 내가 지금처럼 너무 PopupMenuHandler 기능을 부착하기 위해 노력하고있어 윈도우 스크롤이 :의 PopupMenu는

this.scrolledwindow1.PopupMenu += HandlePopupMenu; 

을하고 HandlePopupMenu는 같은 같습니다

[GLib.ConnectBefore] 
public void HandlePopupMenu(object o, PopupMenuArgs args) 
{ 
    Console.WriteLine("test"); 
    Gtk.Menu mbox = new Gtk.Menu(); 
    Gtk.MenuItem Test = new Gtk.MenuItem("test"); 
    Test.Activated += delegate(object sender, EventArgs e) { 
     Console.WriteLine("test"); 
    }; 
    mbox.Append(Test); 
    mbox.ShowAll(); 
    mbox.Popup();  
} 

내 문제를 스크롤 한 창을 마우스 오른쪽 버튼으로 클릭 할 때이 이벤트가 호출되지 않는다는 것입니다. 나는 그것이 this을 기반으로한다고 가정하고 있습니다. ScrollEvent를 처리하는 다른 이벤트는 하나 뿐이며 키보드 나 마우스 버튼을 처리하지 않습니다. 아무도 왜 이것이 작동하지 않는지 내게 말할 수 있습니까?

답변

2

1) 팝업 메뉴를 GtkScrolledWindow에 추가하지 말고 내용을 포함하십시오. 대부분의 이벤트는 기본적으로 사용 중지되며 일반적으로 사용자는 실제로 스크롤 막대에 팝업을 표시하지 않습니다.

2) PopupMenu 신호는 마우스 오른쪽 버튼이 아니라 키보드 단축키 (Shift + F10 또는 메뉴 버튼)에서만 호출됩니다. GtkStatusIconGtkWidget에서 파생되지 않으므로 다르게 작동합니다.

마우스와 키보드를 모두 표시하려면 ButtonPressEventPopupMenu 신호를 구현해야합니다. GTK+ documentation on implementing popup menu (C, not C# though).

+0

주셔서 감사합니다. 이미 ButtonPressEvent를 구현하기 시작했지만 PopUpMenu 이벤트에 대해 궁금합니다. – AvatarOfChronos