2009-05-11 6 views
4

새 노드를 만들려면 TreeView의 빈 영역에서 두 번 클릭 이벤트를 잡으려고합니다. 불행히도 표준 방식이 작동하지 않습니다. 나는 TreeView와 T.V.가 호스팅 된 ScrolledWindow에 ButtonPressEvent를 첨부 해 보았습니다. 내 기능에 콜백을받지 못한다.Gtk.TreeView에서 클릭을 잡는 방법?

어떻게 해결할 수 있습니까?

답변

7

처리기에서 GLib.ConnectBeforeAttribute를 사용하여 TreeView.ButtonPressEvent를 처리해야합니다. 그렇지 않으면 위젯이 내부적으로 이벤트를 처리하고 핸들러가 호출되지 않습니다.

예 :

[GLib.ConnectBefore] 
void OnTreeViewButtonPressEvent(object sender, ButtonPressEventArgs e) 
{ 
    if (e.Type == Gdk.EventType.TwoButtonPress) 
    { 
     // double click 
    } 
}  
-4

트 리뷰에는 독자적인 윈도우가 있다고 생각합니다.

는 창 핸들을 가져 오기 다음 sendMessage 첨부 (treeview-> Getsafehwnd(), tvi_root, tvichildren)

위의 송신 메시지는 이해입니다.

+0

당신이 얘기하지만은 Gtk 될 것 같지 않는 툴킷 확실하지 않음) – viraptor

+0

없음은 GTK, 윈도우 프로그래밍이 아니다. 나는 GTK가 비슷한 것을 가지고 있다고 믿는다. 툴킷은 기본 사항을 래퍼합니다. 나는 믿는다. –

관련 문제