Daten, die von Windows Formularanwendung in die Zwischenablage eingefügt werden, sind nicht verfügbar.
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Daten, die aus einer Windows Forms-Anwendung in der Zwischenablage abgelegt werden, nicht verfügbar sind.
Ursprüngliche Produktversion: Microsoft .NET Framework 4.0
Ursprüngliche KB-Nummer: 2843635
Problembeschreibung
Sie haben eine Anwendung mithilfe von Microsoft .NET Framework 4.0 entwickelt. Die Anwendung erstellt ein neues System.Windows.Forms.DataObject Mithilfe eines nicht registrierten Zwischenablageformats und ruft dann die System.Windows.Forms.Clipboard .SetDataObject -Methode zum Platzieren des Benutzerdefinierten DataObject in der Windows Zwischenablage. Zeitweise können Anwendungen den Inhalt dieser Benutzerdefinierten nicht IDataObject aus der Zwischenablage abrufen. Wenn Sie z. B. System.Windows.Forms.Clipboard.GetDataObject mit dem angegebenen Format der Zwischenablage aufrufen, wird anstelle der System.Windows.Forms.DataObject erwarteten zuvor in der Zwischenablage platzierten Null zurückgegeben.
Ursache
Dies liegt an einem Fehler in Microsoft .NET Framework 4.0.
Lösung
Dieser Fehler wurde im Microsoft .NET Framework 4.5 behoben.
Weitere Informationen
Das Windows Betriebssystem registriert die Format-IDs der Zwischenablage als unsignierte 16-Bit-Ganzzahlen mit dem führenden Bitsatz. In Microsoft .NET Framework 4.0 speichert die Windows Forms-Implementierung die Format-IDs in einer internen Liste als signierte 32-Bit-Ganzzahlen zwischen. Wenn eine Anwendung die Windows IDataObject::GetData IDataObject Forms-Methode aufruft, um ein für ein bestimmtes Format abzurufen, durchläuft Windows Forms die interne Liste, wobei die angeforderte Format-ID (als eine nicht signierte16-Bit-Ganzzahl) mit der zwischengespeicherten Format-ID (gespeichert als 32-Bit-Ganzzahl mit Vorzeichen) verglichen wird. Ohne die richtigen Umwandlungen schlägt der Vergleich fehl, und das erwartete Format wird nicht zurückgegeben. Dies führt schließlich dazu, dass die Windows Forms IDataObject::GetData null an den Aufrufer zurückgibt.