IDataObject: GetDataPresent() liefert true, GetData() liefert aber null - Warum?


Thomas Wölfer
Thomas Wölfer

24. Mai 2005


Angenommen Sie haben eigene Daten ins Clipboard kopiert, indem Sie SetData( "NameTag", data) aufgerufen haben. Später wollen Sie GetData("NameTag") aufrufen, um die Daten aus dem Clipboard wieder zurück zu kopieren. Um sicherzustellen das das geht, haben Sie vorher GetDataPresent("NameTag") aufgerufen.

GetDataPresent() hat auch brav ein 'true' geliefert - wenn Sie aber die Daten abholen wollen, dann liefert GetData() nur noch 'null'. Das steht im Gegensatz zur Dokumentation auf MSDN - zumindest zum Teil.

Hier der Grund: In der Dokumentation wird ein wichtiges Detail nicht erwähnt: Das Objekt, das man mit SetData() ins Clipboard kopiert muss eine ganz wesentliche Eigenschaft haben: Es muss serialisierbar sein.

Ist es das nicht - dann gibts keine Fehlermeldungen oder sonstwas: Statt dessen liefert GetData() eben einfach 'null'. Wäre schön, wenn die Dokumentation das sagen würde... Im nachinein kann man sich das natürlich denken - nur hat man im nachhinein auch einige Stunden damit zugebracht über das Problem nachzudenken, die man auch sinnvoller hätte verbringen können.