2

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の例も、テキスト付きの3つの列、「+」ボタンと「 -"-ボタン。

4

0 に答える 0