Est-il un moyen facile d'ajouter de copier-coller pour une listview, ou devrais-je passer à DataGridView à la place?
Ma demande est un peu comme un carnet d'adresses, il contient des e-mails, numéros, etc où copier coller serait utile.
OriginalL'auteur Zubirg | 2010-06-12
L'exemple ci-dessous gère le Ctrl-C comme une copie dans le presse-papiers de commande, et des copies de la deuxième colonne de la valeur de toutes les lignes sélectionnées:
Utilisation
item.Text
pour la première colonne, etitem.SubItems[n].Text
pour les autres colonnes.Références:
KeyDown
événement.KeyUp
n'a pas de travail, parce que lorsque vous appuyez sur lec
il a été auto-sélection de la première entrée dans la zone de liste qui a commencé avec unec
, le rendu de mon multisélection à une seule d'entre elles.J'ai été faire un invalide attente sur
builder.AppendLine(item.SubItems[1].Text);
au Lieu de cela, j'ai dû utiliserbuilder.AppendLine(item.Text);
OriginalL'auteur Brett
Ce n'est pas très difficile de le faire en manuel copier et coller, il suffit de mettre dans un gestionnaire d'événement pour
KeyDown
(ou c'est peut-êtreKeyPress
ne me souviens pas, mais assez sûr que c'est l'un d'entre eux) et vérifiez ce qui touche en regardante.KeyCode
et de vérifier sie.Control
est vrai. Si c'est l'un desx
,c
ouv
appelez simplementClipboard.SetText
ouClipboard.GetText
pour écrire/lire/à partir du presse-papiers.Voir ici pour la documentation MSDN de la
Clipboard
classe.Vous pouvez ajouter un menu contextuel avec le Copier-Coller à la liste également pour la rendre complète.
Oui, j'ai oublié que vous n'avez pas vraiment cellules dans un
ListView
, il pourrait être plus facile de passer à unDataGridView
. Toutefois, si vous ne voulez coller avec leListView
vous pourriez faire quelque chose comme de la manipulationClick
etMouseDown
événements sur elle pour calculer ce point a été cliqué et la modification de l'BackColor
de ce paragraphe afin de rendre l'apparence sélectionné, et puis vous pourriez poignée de copier et de coller uniquement pour ce point. Que vous avez à faire assurez-vous de définirUseItemStyleForSubItems = false;
sur la question bien que, sinon, les couleurs ne seront pas diffusées sur les sous-éléments.OriginalL'auteur Hans Olsson
Mon exigence était d'ajouter un bouton pour copier une liste de numéros de série dans le presse-papiers. J'ai ajouté le bouton de la façon habituelle, puis ajout de la méthode suivante:
OriginalL'auteur Crazy Cat