Gtk 如何获取treeview/treeview柱的高度?

Gtk 如何获取treeview/treeview柱的高度?,gtk,gtk#,gtktreeview,Gtk,Gtk#,Gtktreeview,请问我怎样才能获得treeview/treeviewcolumn的高度?我有一个简单的代码,里面有大的树状视图和垂直的滚动条。当我设置小的布局高度时,我看不到treeview的所有项目,而当我设置大的布局高度时,我看到整个表格的底部都是空白。是否可以设置布局,使其具有与treeview完全相同的高度或treeview列中最大的高度? 提前谢谢。 一段代码: tree = new Gtk.TreeView(); vadjustment = new Gtk.Adjustment(0, 0, 0, 0

请问我怎样才能获得treeview/treeviewcolumn的高度?我有一个简单的代码,里面有大的树状视图和垂直的滚动条。当我设置小的布局高度时,我看不到treeview的所有项目,而当我设置大的布局高度时,我看到整个表格的底部都是空白。是否可以设置布局,使其具有与treeview完全相同的高度或treeview列中最大的高度? 提前谢谢。 一段代码:

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, ???);

还有一个问题-是否可以为treeview项目应用黑色边框颜色?

您应该能够在其暴露/绘制事件中可靠地获得treeview的大小。如果你勾入其中,你可以用它的高度来调整布局的大小。您可以猜测初始的大布局大小,第一次曝光会将其缩小。经常调用Expose,不应该经常调整大小,因此应该使用逻辑来检测新高度是否不同。你也可以防止早期的曝光,因为树树树高度可能有疯狂的价值

嗨,谢谢你的回答。我想我理解你的意思,但我有一个小问题,从函数中得到树的大小。我已经创建了event-tree.ExposeEvent+=handletreexposeevent;void handletreexposeevent对象o,ExposeEventArgs args{layout.SetSize800,“如何获取此数字”;}treeview是否具有获取其高度的功能?提前感谢。小部件的分配包含其高度。我不知道gtk,但gtk有一个gtk_widget_get_分配方法。谢谢,它很有效!对于其他搜索者:int lama=tree.Allocation.Height;layout.SetSize800,uint lama;曝光。