2009-10-06 8 views
1

Je dois être capable de copier un nom ou des noms d'une application (en utilisant les commandes de copie normales), puis de pouvoir cliquer deux fois sur la cellule de texte dans un DataGridView pour coller le les données dans la cellule de la grille. Des idées sur la façon d'accomplir cela? J'essaie de minimiser l'utilisation du clavier pour cette fonctionnalité.Copier et coller dans une cellule DataGridView (C#)

+9

S'il vous plaît marquer une réponse acceptée, si cela vous a aidé à résoudre le problème. –

Répondre

1

Vous devez associer un EventManager à l'événement cliqué sur une cellule et remplacer le texte de la cellule par les données Clipboard.GetText().

8

Ceci est réellement plus facile que vous pourriez vous attendre.

Créer un événement CellDoubleClick dans votre DataGridView et il a mis le code comme ceci:

private void dataGridView1_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { 
    dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = Clipboard.GetText(); 
} 
+0

C'est ce dont j'avais besoin. Merci un million. – DaBomb

+0

Bien! Aucun problème. –

+1

C'est le moyen le plus simple de copier et coller. Mais y at-il de toute façon que je peux activer l'utilisation pour faire un clic droit, puis coller sur la vue de données. – Ani

1

Je l'ai écrit pour copier un générique:

 DataGridViewSelectedRowCollection dtSeleccionados = dataGrid.SelectedRows; 
     DataGridViewCellCollection dtCells; 
     String row; 
     String strCopiado = ""; 
     for (int i = dtSeleccionados.Count - 1; i >= 0; i--) 
     { 
      dtCells = dtSeleccionados[i].Cells; 
      row = ""; 
      for (int j = 0; j < dtCells.Count; j++) 
      { 
       row = row + dtCells[j].Value.ToString() + (((j + 1) == dtCells.Count) ? "" : "\t"); 
      } 
      strCopiado = strCopiado + row + "\n"; 
     } 
     try 
     { 
      Clipboard.SetText(strCopiado); 
     } 
     catch (ArgumentNullException ex) 
     { 
      Console.Write(ex.ToString()); 
     } 
Questions connexes