从剪贴板上拿回面板

本文关键字:剪贴板 | 更新日期: 2023-09-27 18:18:02

这是我的类,我总是得到一个空而不是我的面板…

谁能给我点提示,告诉我该怎么做?
    [Serializable]
public class DragDropBlock : Panel
{
    public DragDropBlock()
        {
            this.MouseDown += new MouseEventHandler(Mouse_Down);
            this.MouseUp += new MouseEventHandler(Mouse_Up);
        }
        void Mouse_Down(object sender, System.Windows.Forms.MouseEventArgs e)
        {
           Clipboard.SetData("DragDropBlock", this);
        }
        void Mouse_Up(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            IDataObject IBlock = Clipboard.GetDataObject();
            DragDropBlock Block = (DragDropBlock)IBlock.GetData(typeof(DragDropBlock));
        }
}

从剪贴板上拿回面板

给定一个类:

[Serializable]
class Test
{
    public string Data
    {
        get;
        set;
    }
}

如此:

Test t = new Test()
{
     Data = "DERP!"
};
Clipboard.SetData("Test", t);
Test newT = (Test)Clipboard.GetData("Test");
Console.WriteLine(newT.Data);

如果你想使用数据对象:

Test t = new Test()
{
    Data = "DERP!"
};
Clipboard.SetDataObject(new DataObject("Test", t));
Test newT = (Test)Clipboard.GetDataObject().GetData("Test");
Console.WriteLine(newT.Data);

两者的输出都是:

DERP!

这是我的班的更正:工作!!

         [Serializable]
class DragBlock
{
    public string Data
    {
        get;
        set;
    }
}
public class DragDropBlock : Panel
{
    DragBlock Block;
    public DragDropBlock()
        {
            this.MouseDown += new MouseEventHandler(Mouse_Down);
            this.MouseUp += new MouseEventHandler(Mouse_Up);
            Block = new DragBlock()
            {
                Data = "TEST!"
            };
        }
        void Mouse_Down(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            Clipboard.SetDataObject(new DataObject("DragBlock", Block));
        }
        void Mouse_Up(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            DragBlock newBlock = (DragBlock)Clipboard.GetDataObject().GetData("DragBlock");
            Console.WriteLine(newBlock.Data);
    }
}