DragDrop设置SelectionData格式

时间:2009-10-10 11:31:41

标签: drag-and-drop gtk#

我在gtk#下拖放一点点玩。 致电时

protected virtual void OnDragDataGet (object o, Gtk.DragDataGetArgs args)
{
    byte[] data = GetSomeData();
    args.SelectionData.Set(args.Context.Targets[0], 0, data);
}

发生错误:

Gtk-CRITICAL **: _gtk_selection_request: assertion `(data.format >= 8) && (data.format % 8 == 0)' failed

但是将格式设置为8可以正常工作:

protected virtual void OnDragDataGet (object o, Gtk.DragDataGetArgs args)
{
    byte[] data = GetSomeData();
    args.SelectionData.Set(args.Context.Targets[0], 8, data);
}

我找到了一些关于拖放的例子,都使用8作为发送数据的格式。 (使用0实际上是一个错字。)但是我没有找到这种格式的作用,或者为什么8个有效,而0则没有。

有人可以解释“fomat”的作用吗?

1 个答案:

答案 0 :(得分:0)

http://www.go-mono.com/docs/index.aspx?link=M%3aGtk.SelectionData.Set%28Gdk.Atom%2cSystem.Int32%2cSystem.Byte[]%29

  

格式(单位中的位数) - 将其设置为8并将数据编码为UTF-8