gtk#,TreeView,CellRendererSpin:旋转按钮不可见&自定义CellRenderer

时间:2012-03-24 10:30:51

标签: c# mono monodevelop gtk# gtktreeview

我正在尝试在TreeView中使用旋转按钮。 它像这样添加:

Gtk.TreeViewColumn adjustColumn = new Gtk.TreeViewColumn();
adjustColumn.Title = "";
Gtk.CellRendererSpin adjustCell = new Gtk.CellRendererSpin();
adjustCell.Digits = 0;
adjustCell.Adjustment = new Adjustment(0, 0, 99, 1, 99, 99);
adjustCell.Editable = true;
adjustCell.Visible = true;
adjustCell.Sensitive = true;
adjustCell.Mode = CellRendererMode.Editable;
adjustColumn.PackEnd(adjustCell, true);

adjustColumn.SetCellDataFunc(adjustCell, new Gtk.TreeCellDataFunc(RenderAdjuster));
treeView.AppendColumn(adjustColumn);

在渲染功能中,完成以下操作:

(cell as Gtk.CellRendererSpin).Width = 30;
(cell as Gtk.CellRendererSpin).Height = 20;
(cell as Gtk.CellRendererSpin).Text = "" + (cell as Gtk.CellRendererSpin).Adjustment.Value;

确实呈现值,但旋转按钮不可见!只有在用户点击值后,它们才会显示。这绝对是荒谬的,因为除了随机点击之外,用户无法知道单元格是可编辑的,尤其是因为行中有其他值不可编辑。

所以我的第一个问题是,如何让这些旋转按钮始终可见?

可以使用自定义CellRenderer完成吗?

我将感谢一个如何创建我自己的,实际工作的旋转按钮单元格渲染器的示例。不幸的是,自定义单元格渲染器是一个没有文档的谜团(几乎所有在gtk#;))。你能找到的所有东西都是绘制开罗矩形等的例子。必须有一种更简单的方法,您可以简单地将任何窗口小部件放入该渲染器,并聆听点击等,并在渲染单元格时简单地渲染窗口小部件。

自定义CellRenderer的一个例子,它只是显示一个按钮(可以收听点击)也可以,因为我至少可以“伪造”一个SpinButton,有三个带有文本的列,一个“+” - 按钮和一个“ - ” - 按钮。

0 个答案:

没有答案