2009-12-09 12 views
10

Ho diverse caselle di testo su un modulo di Windows.Come consentire CTRL-V (Incolla) in una casella di testo di Winforms?

Non riesco a incollare il testo in nessuno di essi utilizzando CTRL-V, sebbene sia ancora possibile fare clic con il pulsante destro del mouse e selezionare Incolla. Questo è abbastanza fastidioso.

Ho provato questo con KeyPreview del modulo sia come vero che falso. TextBox.ShortcutsEnabled è anche vero.

+1

Non proprio legato a questo codice se ALTRE caselle di testo senza eventi fanno la stessa cosa eh? –

+0

D'accordo, ho modificato la domanda per riflettere questo. –

+0

Il modulo in questione è un modulo "figlio"? –

risposta

15

Verificare se si dispone di un menu sul form con una scorciatoia per Ctrl-V.

+1

Bingo. Il modulo stesso non aveva un menu, ma il suo genitore MDI lo ha fatto. Era il menu predefinito "Modifica" fornito dal controllo della barra dei menu. Ho rimosso la sezione Modifica dal menu e tutto è tornato alla normalità. –

+1

Wow. Grazie mille su questo. Ho avuto la stessa situazione, il genitore MDI ha avuto la scorciatoia. – granadaCoder

+1

@granadaCoder: sì, è/così/fastidioso quando la cosa finita ... lì ... influenza la cosa in basso ... qui. –

4

Il codice che hai postato non ha nulla a che fare con il tuo problema Ctrl + V, questo è certo. Non posso dirti altro se non pubblichi altro codice.

Il codice speciale non dovrebbe essere necessario per Ctrl + V, ma una supposizione che ho è di assicurarsi di avere YourTextBoxId.ShortcutsEnabled impostato su True.

+2

grazie, e ho modificato la domanda, ma questo dovrebbe essere un commento. –

+0

Ho aggiornato la mia risposta, per favore guardatela. –

+0

L'ho già verificato, è impostato su true. –

9

Il seguente codice dovrebbe aiutare:

private void textBox1_KeyUp(object sender, KeyEventArgs e) { 
    if (e.KeyData == (Keys.Control | Keys.V)) 
     (sender as TextBox).Paste(); 
} 
+1

Un bel lavoro, ma dovrei aggiungere anche il codice per Taglia e Copia. Preferirei tornare al comportamento predefinito. –

+0

Questo si incolla quando viene premuto solo V, giusto ?! –

+0

@Josh: non nel mio ambiente. Una 'v' rimane una 'v', mentre la combinazione delle chiavi di controllo e 'v' diventa un'azione di incolla. – Webleeuw

1

Sì. So che questa risposta è possibile ma ho pensato di lanciare i miei 2cents solo per divertimento. Ho anche avuto un problema simile. L'impostazione del valore TextBox.ShortcutsEnabled su True non ha fatto nulla per me. Sono stato sorpreso di vedere la nota lasciata da Microsoft qui: http://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.shortcutsenabled.aspx riguardo a questo problema. Abbastanza interessante per non dire altro.

Dato che, ho appena implementato la funzionalità tramite i gestori di chiavi chiave come indicato nel post di Webleeuw.

+0

Sto rispondendo a questa risposta per avere un occhio attento e vedere quel commento. // Il controllo TextBox non supporta i tasti di scelta rapida. Bello trovare PunkConservative. – granadaCoder

2

Stavo passando anche io con lo stesso problema. dopo un sacco di google ho finalmente trovato la soluzione. È perché nel comando aplliciation ctrl + v la scelta rapida era già definita (menu Modifica-> Incolla). Dopo la rimozione di questo ... funziona bene per me .... La speranza che aiuta ....

+0

Questo era il problema, e capita di trovarmi nel mio modulo MDI (come menzionato da altri in questo post da altri). – granadaCoder

2

Il controllo TextBox non supporta il CTRL +Un tasto di scelta rapida quando il valore della proprietà Multiline è vero .

+0

Hai ragione, lo dice nella documentazione: http://msdn.microsoft.com/it us/library/system.windows.forms.textboxbase.shortcutsenabled.aspx – user1032613

-1

È possibile commentare già assegnato lo stesso collegamento ad un altro controllo, dal modulo designer.cs/.vb del modulo. Nel mio caso ho risolto per il menu in modo seguente

//this.copyToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys) 
((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.C))); 
1

Vai alla proprietà per il controllo:

Proprietà> Comportamento> Scorciatoie Enabled = true

lavoro fatto - ora accetta di default di Windows scorciatoie per questo controllo

Problemi correlati