Zwischenablage Kopieren Objekte aus
Ich bin versucht zu kopieren ein Objekt in die windows-Zwischenablage kopieren und wieder aus. Mein code ist wie folgt:
Kopieren auf Zwischenablage:
Clipboard.Clear();
DataObject newObject = new DataObject(prompts);
newObject.SetData(myString);
Clipboard.SetDataObject(newObject);
Wo prompts
ist ein List<Data.Sources.PromptResult>
Sammlung.
Kopieren aus Zwischenablage:
IDataObject dataObject = System.Windows.Forms.Clipboard.GetDataObject();
if (dataObject.GetDataPresent(typeof(List<Data.Sources.PromptResult>)))
{
Type type = typeof(List<Data.Sources.PromptResult>);
Object obj = dataObject.GetData(type);
return (List<Data.Sources.PromptResult>)dataObject.GetData(type);
}
Den GetFormats()
zeigt das format in der Liste und die GetDataPresent(List<Data.Sources.PromptResult>)
gibt true zurück, aber wenn ich versuche, um das Objekt aus der Clipboard
Klasse mit GetData(List<Data.Sources.PromptResult>)
bekomme ich eine Rendite von null.
Hat jemand eine Idee, was falsch sein könnte?
- Ich lief in das gleiche Probleme, aber ich habe es anders gelöst. Alle die ich tun musste, war, um sicherzustellen, dass Sie jeden Teil meines Objekts (Teilobjekte) war einer serialisierbaren Typ. Weniger code bei weitem. Versuchen Sie den IsSerializable-Methode! Wenn Ihre Klasse nicht serialisierbar sind die Ausnahme beschreibt das problem ziemlich gut.
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, ich versucht, um die Liste " meine Benutzer-geben Sie in die Zwischenablage und bekommen es zurück...
Hier ist, was ich versucht habe:
Meiner User-Klasse:
Rest des Codes:
...und das Ergebnis war
null
🙂...bis ich markiert
User
Klasse alsSerializable
Nach, dass mein code funktioniert.
Ok es ist nicht die Antwort, aber vielleicht hilft es dir etwas, wie.
@Reniuz vielen Dank für deine Hilfe, es hat mir geholfen, herauszufinden, die Antwort.
Um den text und benutzerdefinierte Objekt-Daten aus der Zwischenablage mit mehreren Formaten habe ich implementiert die IDataObject-Schnittstelle, die in meiner eigenen Klasse. Der code zum festlegen der Daten-Objekt haben muss, das copy-flag gesetzt, wie diese:
Um die Daten wieder aus der standard-text kann abgerufen werden über:
Können die Daten abgerufen werden, mithilfe der Daten Methode:
Dem anderen Punkt, dass war hilfreich war, um zu testen, dass das Objekt, ich war putting in die Zwischenablage kopieren könnte serialisiert werden durch die Verwendung der BinaryFormatter-Klasse, um diesen test durchzuführen... Wenn eine Ausnahme ausgelöst wird, dass das kopieren in die Zwischenablage würde auch nicht, aber still.
Also meine Klasse hat:
Ich hatte ein ähnliches Szenario und nach der Markierung meiner Klasse als serialisierbar ich es geschafft habe.
Also versuchen Sie das Serializable-Attribut der Klasse Daten.Quellen.PromptResult.