Problema con la Clipboard

martedì 26 febbraio 2008 - 08.48

Yogr Profilo | Newbie

Ciao a tutti, sto cominciando ad addentrarmi nel framework .NET. Tutto sembra semplice e lineare, ma sto avendo dei problemi con la classe Clipboard (utilizzo Visual c++ 2008 express). Mi spiego meglio:
ho un form che contiene una textbox multiline ed una textbox single line. Ho associato una funzione all'evento TextChanged della multiline: ogni volta che il testo cambia esegue delle operazioni su quest'ultimo, produce un output in linea singola, lo assegna al Text della single line e poi dovrebbe anche copiare questa linea di testo nella clipboard. La multiline accetta il testo di input sia tramite incolla sia tramite drag&drop.

Per copiare il testo della clipboard ho provato i seguenti metodi:

Metodo #1
singleLineTextBox->SelectAll(); singleLineTextBox->Copy();

Metodo #2
try { Clipboard::Clear(); Clipboard::SetText(singleLineTextBox->Text,TextDataFormat::UnicodeText); } catch (Exception ^e) { }

Metodo #3
try { Clipboard::Clear(); Clipboard::SetDataObject(singleLineTextBox->Text,false,20,200); } catch (Exception ^e) { }

Tutti e tre i metodi funzionano se droppo del testo nella textbox multiline, mentre falliscono lanciando una "System.Runtime.InteropServices.ExternalException" nei casi 2 e 3 se incollo il testo tramite Ctrl+V o il menù incolla. Sinceramente credo che anche il primo metodo lanci un'eccezione, che però è "catchata" all'interno della funzione Copy(). Cercando in giro ho letto che l'eccezione viene lanciata se la clipboard è utilizzata da un altro thread, ma non capisco perché debba funzionare col drop e non con ctrl+v... è possibile che in questo caso venga invocato qualche altro evento che interferisce con la clipboard?
Ultime info: ho compilato il sorgente per il framework v 2.0, 3.0 e 3.5, ma non cambia nulla, inoltre l'entry point ha l'attributo [STAThreadAttribute] settato.

Spero di non essere stato confusionario, ciao.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5