2012-04-09 82 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