我想编写一个自定义CellRenderer来格式化它的内容。它不应显示-905.65000
,而应显示-905.65 €
。我已经可以使用Gtk.TreeCellDataFunc
来实现这一点,但使用自定义CellRenderer会更优雅。
以下代码给出了分段错误:
class CellRendererTextFormat : Gtk.CellRendererText {
public new string text {
get { return text; }
set {
char[] a = new char[16];
text = double.parse(value).format(a,"%-.2f €");
}
}
public CellRendererTextFormat () {
GLib.Object ();
}
}
我应该怎么做呢?
答案 0 :(得分:1)
有两个问题:
1)text
被分配了a
的内存,该内存被释放。您需要将其分配给超出set
范围的持久内存。
2)value
现在是一个字符串(因为您只能分配相同类型的属性值)。你真的有字符串吗,或者你只是为了让它起作用而加入parse
?
相反:
class CellRendererEuroValue : Gtk.CellRendererText {
char[] euro_str = new char[16];
private double _euro_value;
public double euro_value {
get { return _euro_value; }
set {
_euro_value = value;
value.format(euro_str,"%-.2f €");
text = (string) euro_str;
}
}
public CellRendererTextFormat () {
GLib.Object ();
}
}