2012-04-09 80 views
0

我有一個簡單的treeview(就像這個 - http://www.mono-project.com/GtkSharp_TreeView_Tutorial)填充了200個項目並連接到滾動條。一切正常,但是當我選擇一個項目並使用箭頭鍵時,所選項目可能超出可見區域。是否有可能把重點放在它或滾動條的設置調整,即Gtk treeview問題

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.Value和向上箭頭鍵時,我應該從vadjustment.Value刪除一些數字)。提前致謝。 – matej148 2012-04-10 11:37:27

+0

matej148:查看更新。 – 2012-04-13 11:55:16

+0

謝謝,但我有TreeView連接到滾動條,它運作良好。我只需要在用戶更改所選項目時更改V調整 - 問題是我不知道我必須添加或刪除的值是什麼:'vadjustment.Value = SELECTED-ITEM.DISTANCE-FROM-TOP-TREEVIEW ;'或'vadjustment.value + = something'(當用戶按下箭頭鍵時)和'vadjustment.value - = something'(當用戶向上按箭頭鍵時) – matej148 2012-04-13 21:19:28

0

我同意Johannes' answer你似乎在做一些奇怪的事情,你真的應該只需要使用一個GtkScrolledWindow。它應該處理鍵盤導航(你似乎在你對Johannes的回答的評論中描述的),這不是你需要手動做的事情。

無論如何設法回答您的問題,您可以使用gtk_tree_view_scroll_to_cell()使樹視圖滾動到任何給定的單元格。

+0

謝謝你的回答,但ScrollToCell函數不起作用對我來說,因爲我有滾動條和樹視圖分開(我剛剛嘗試過)。它連接在表格中:layout.Put(tree,0,0); Table table = new Table(1,2,false);table.Attach(layout,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.Sshrink | Gtk.AttachOptions.Fill,0,0);我用tree.Selection.Changed捕獲事件(行選擇)+ = HandleTreeSelectionChanged; – matej148 2012-04-10 14:50:34