如何获得treeview / treeviewcolumn的高度?

时间:2012-04-07 11:52:11

标签: gtk gtk# gtktreeview

我怎样才能获得treeview / treeviewcolumn的高度?我有简单的代码与布局(内部是大树视图)和表中的垂直滚动条。当我设置小高度的布局时,我看不到树视图的所有项目,当我设置它时,我看到整个表格在布局底部有空白空间。是否可以设置布局,它将具有与树视图完全相同的高度或树视图中最大的高度? 提前致谢。 一段代码:

tree = new Gtk.TreeView();
vadjustment = new Gtk.Adjustment(0, 0, 0, 0, 0, 0);
vscrollbar = new Gtk.VScrollbar(vadjustment);
Lyout layout = new Layout(null, vadjustment);
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.Shrink|Gtk.AttachOptions.Fill, 0, 0);
box.PackStart (table, true, true, 4);
vbox1.Add(box);
...
TreeViewColumn first = new TreeViewColumn();
first.Title=h1;
Gtk.CellRendererText first_name_cell = new Gtk.CellRendererText ();
first.PackStart(prvy_name_cell, true);
first_name_cell.Width=20;
...
tree.AppendColumn (first);
layout.SetSize(800, ???);

另外一个问题 - 是否可以为树视图项目应用黑色边框颜色?

1 个答案:

答案 0 :(得分:0)

您应该能够在其expose / draw事件中可靠地获取树视图的大小。如果您挂钩,可以使用其高度来调整布局大小。你可以猜出一个初始的大型布局尺寸,第一次曝光会将其修剪下来。经常调用Expose,并且不应经常调整大小,因此应该使用检测新高度不同的逻辑。您也可以防止早期调用暴露树视图高度可能具有疯狂值的位置。