Zwischenablage Kopieren von Objekten nach und von

8

Ich versuche ein Objekt in die Windows-Zwischenablage zu kopieren und wieder auszuschalten. Mein Code ist wie folgt:

In die Zwischenablage kopieren:

%Vor%

Wo prompts eine List<Data.Sources.PromptResult> Sammlung ist.

Zwischenablage kopieren:

%Vor%

Das GetFormats() zeigt das Format als in der Liste und das GetDataPresent(List<Data.Sources.PromptResult>) gibt true zurück, aber wenn ich versuche, das Objekt aus der Clipboard Klasse mit GetData(List<Data.Sources.PromptResult>) zu holen, bekomme ich eine Rückgabe von null.

Hat jemand eine Idee, was könnte falsch sein?

    
James 27.01.2012, 11:32
quelle

3 Antworten

11

OK Ich habe versucht, eine Liste meines Benutzertyps in die Zwischenablage einzufügen und sie zurück zu bekommen ... Hier ist, was ich versucht habe:

Meine Benutzerklasse:

%Vor%

Der übrige Code:

%Vor%

... und das Ergebnis war null :) ... bis ich User class als Serializable

markiert habe %Vor%

Danach hat mein Code funktioniert. Ok, es ist nicht die Antwort, aber vielleicht hilft es Ihnen, wie.

    
Reniuz 27.01.2012, 13:04
quelle
4

@Reniuz danke für deine Hilfe, es hat mir geholfen, die Antwort zu erarbeiten.

Um die Text- und benutzerdefinierten Objektdaten aus der Zwischenablage mit mehreren Formaten zu entfernen, habe ich die IDataObject-Schnittstelle in meiner eigenen Klasse implementiert. Der Code zum Festlegen des Datenobjekts muss das Kopierflag wie folgt gesetzt haben:

%Vor%

Um die Daten wieder zu erhalten, kann der Standardtext mit Hilfe von

abgerufen werden %Vor%

Die Daten können mit der Datenmethode abgerufen werden:

%Vor%

Der andere hilfreiche Punkt war, zu testen, ob das Objekt, das ich in die Zwischenablage legte, mit Hilfe der BinaryFormatter-Klasse serialisiert werden konnte. Wenn eine Ausnahme ausgelöst wird, würde das Kopieren in die Zwischenablage ebenfalls fehlschlagen. aber still.

Also meine Klasse hat:

%Vor%     
James 30.01.2012 16:17
quelle
3

Ich hatte ein ähnliches Szenario und nachdem ich meine Klasse als serialisierbar markiert habe, habe ich es zum Laufen gebracht.

Versuchen Sie also, das Serializable-Attribut in Ihre Klasse Data.Sources.PromptResult einzufügen.

    
granaker 27.01.2012 13:05
quelle

Tags und Links