クリップボードからコピーしようとしている[Serializable]とマークしたクラスがあります。GetData()を呼び出すと、常にnullが返されます。
コピーコード:
IDataObject dataObject = new DataObject();
dataObject.SetData("MyClass", false, myObject);
Clipboard.SetDataObject(dataObject, true);
コードを貼り付けます:
if (Clipboard.ContainsData("MyClass"))
{
IDataObject dataObject = Clipboard.GetDataObject();
if (dataObject.GetDataPresent("MyClass"))
{
MyClass myObject = (MyClass)dataObject.GetData("MyClass");
// myObject is null
}
}
MyClassは、実際には派生クラスです。それとそのベースの両方に[Serializable]のフラグが付けられます。簡単なテストクラスで同じコードを試しましたが、うまくいきました。
MyClassには、GraphicsPath、Pen、Brush、および値型の配列が含まれています。