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.