我试图复制并粘贴部分列表。不幸的是,当从剪贴板粘贴时,条件查找存储的数据,但是当分配给变量时,它仍然等于空。 这是我的代码列表和列表项。c#粘贴列表<MyObj>返回null
public class ListCanvasBlocks : List<MyBlock>
{
public List<MyBlock> MyCopySelectedObj()
{
var x = new List<MyBlock>();
x.AddRange(this.Where(z => z.IsSelected));
return x;
}
}
[Serializable]
public class MyBlock
{
public MyBlock(Rectangle rect, BlocksData.Shape shape,int id)
{
Rect = rect;
Shape = shape;
Text = BlocksData.Text(Shape);
ID = id;
}
public string Text;
public bool IsSelected { get; set; } = false;
public bool IsLocked = false;
public int ID{ get; set; }
public Point PointInput;
public Point PointOutput1, PointOutput2;
public Rectangle Rect;
public SolidBrush BackColor;
public Color FontColor;
public int FontSize;
public BlocksData.Shape Shape{get;set;}
}
,这是当我按下CTRL我做什么+ C/V
public void Copy()
{
Clipboard.Clear();
Clipboard.SetData("ListCanvasBlocks", _canvObj.MyCopySelectedObj());
}
public void Paste()
{
if (Clipboard.ContainsData("ListCanvasBlocks"))
{var test = (ListCanvasBlocks)Clipboard.GetData("ListCanvasBlocks");}
}
状况的粘贴方法返回true,但可变测试仍然是空后分配新建分配FY
BlockData.Shape i s枚举
我花了一段时间才明白,因为他说测试是空的,而不是抛出异常:(或者他可以将GetData的结果投给列表。 –
hoodaticus
我之前尝试过,但我确实再次尝试。 ,而粘贴仍然分配null.Worst的情况是,我无法验证问题是否与复制或粘贴。我知道只有在剪贴板格式兼容 – Robert
我终于发现一个问题 问题是在SolidBrush当它被复制时,不幸的是,当你粘贴时,我们得到null。你知道如何解决它吗? – Robert