2012-04-09 4 views
0

간단한 트리보기 (예 : http://www.mono-project.com/GtkSharp_TreeView_Tutorial)가 200 개 항목으로 채워지고 스크롤바에 연결되었습니다. 모든 것이 작동하지만 항목을 선택하고 화살표 키를 사용하면 선택한 항목이 보이는 영역 밖에있을 수 있습니다. 그것이 가능, 그것은 또는 스크롤 바의 설정 조정에 초점을 즉Gtk 트 리뷰 문제

void HandleTreeSelectionChanged (object sender, EventArgs e) 
{ 
    vadjustment.Value=SELECTED-ITEM.DISTANCE-FROM-TOP-OF-TREEVIEW; 
} 

그리고 하나 더 질문 : 테이블에 검은 색 테두리를 칠하는 방법 (이 tree.EnableGridLines = TreeViewGridLines.Both은, 그냥 그리드 내부에 있습니다). 미리 감사드립니다. Matej

답변

0

스크롤 막대를 트리보기 (또는 텍스트보기)에 추가하려면 GtkScrolledWindow에 추가하기 만하면됩니다. 자동으로 모든 것을 처리합니다. 나는 또한 그것이 대부분의 테마에서 테두리를 생성한다는 것을 확신합니다.

업데이트 : 또는, 당신은 또한 "바인딩"트리 뷰의 스크롤 바의 조정을 설정하여 임의의 스크롤에 트리 뷰의 스크롤 동작은 할 수

scrollbar = gtk.VScrollbar(treeview.props.vadjustment)

(아, 그건 PyGTK 문법, Gtk #에서는 아마도 treeview.VAdjustment 일 것입니다.)

+0

죄송하지만 별도로 처리해야합니다. 내가 선택한 항목을 따르는 방법을 알아야합니다 (사용자가 화살표 키를 눌렀을 때 vadjustment에 숫자를 추가해야합니다. 값과 화살표 키를 밀어 올리면 vadjustment에서 일부 숫자를 제거해야합니다. 값). 미리 감사드립니다. – matej148

+0

matej148 : 업데이트를 참조하십시오. –

+0

감사합니다.하지만 treeview가 스크롤바에 연결되어있어 잘 작동합니다. 사용자가 선택한 항목을 변경할 때 VAdjustment를 변경해야합니다. 문제는 제가 추가하거나 제거해야하는 가치가 무엇인지 모르겠다는 것입니다 :'vadjustment.Value = SELECTED-ITEM.DISTANCE-FROM-TOP-OF-TREEVIEW (사용자가 화살표 키를 누를 때) vadjustment.value + = something (사용자가 화살표 키를 누를 때) – matej148

0

나는 이상한 일을하고있는 것처럼 보인 Johannes' answer에 동의합니다. 실제로는 GtkScrolledWindow를 사용해야합니다. 그것은 키보드 네비게이션 (당신이 요하네스의 대답에 대한 당신의 코멘트에서 묘사하고있는 것처럼 보입니다)을 처리해야합니다, 이것은 수동으로해야 할 필요가없는 것입니다.

어쨌든 질문에 대답하려고하면 gtk_tree_view_scroll_to_cell()을 사용하여 주어진 셀로 트리보기를 스크롤 할 수 있습니다.

+0

감사합니다. 그러나 ScrollToCell 함수가 작동하지 않습니다. 왜냐하면 나는 스크롤바와 트리 뷰를 분리했기 때문에 (나는 방금 시도했다). 그것은 테이블에 연결되어 있습니다 : layout.Put (tree, 0, 0); 테이블 테이블 = 새 테이블 (1, 2, false); table.Attach (레이아웃, 0, 1, 0, 1, Gtk.AttachOptions.Expand | Gtk.AttachOptions.Fill, Gtk.AttachOptions.Expand | Gtk.AttachOptions.Fill, 0, 0); table.Attach (vscrollbar, 1, 2, 0, 1, Gtk.AttachOptions.Shrink, Gtk.AttachOptions.Shrink | Gtk.AttachOptions.Fill, 0, 0); 나는 tree.Selection.Changed + = HandleTreeSelectionChanged;로 이벤트 (행 선택)를 잡았다. – matej148