Thomas Woelfers Baustatik Blog

Baustatik-Software und was sonst des Weges kommt

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

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.

Comments are closed