代码之家  ›  专栏  ›  技术社区  ›  Nils

DragDrop设置选择数据格式

  •  0
  • Nils  · 技术社区  · 15 年前

    我正在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 回复  |  直到 15 年前
        1
  •  0
  •   Ian Kemp    15 年前

    从…起

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

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