2010-11-02 120 views
5

我已经看到Datagridview不能启用复制和粘贴多个单元格的文本,是否有一个简单的设置来启用该功能,还是必须使用该键处理程序和剪贴板数据存储以包含该功能。在DataGridView中复制和粘贴多个单元格

用户想要复制一行内的3个单元格并能够将它们的文本粘贴到不同的行中。

回答

5

好吧,我得到了一个解决方案,但它并没有被粘贴细胞测试进行的跨多个rows.This是在DataGridView

if (e.Control && e.KeyCode == Keys.C) 
      { 
       DataObject d = AccountGrid.GetClipboardContent(); 
       Clipboard.SetDataObject(d); 
       e.Handled = true; 
      } 
      else if (e.Control && e.KeyCode == Keys.V) 
      { 
       string s = Clipboard.GetText(); 
       string[] lines = s.Split('\n'); 
       int row = AccountGrid.CurrentCell.RowIndex; 
       int col = AccountGrid.CurrentCell.ColumnIndex; 
       string[] cells = lines[0].Split('\t'); 
       int cellsSelected = cells.Length; 
       for (int i = 0; i < cellsSelected; i++) 
       { 
        AccountGrid[col, row].Value = cells[i]; 
        col++; 
       } 
      } 
1
 string s = Clipboard.GetText(); 
     string[] lines = s.Split('\n'); 
     int row = dataGridView1.CurrentCell.RowIndex; 
     int col = dataGridView1.CurrentCell.ColumnIndex; 
     foreach (string line in lines) 
     { 
      string[] cells = line.Split('\t'); 
      int cellsSelected = cells.Length; 
      if (row < dataGridView1.Rows.Count) 
      { 
       for (int i = 0; i < cellsSelected; i++) 
       { 
        if (col + i < dataGridView1.Columns.Count) 
         dataGridView1[col + i, row].Value = cells[i]; 
        else 
         break; 
       } 
       row++; 
      } 
      else 
      { 
       break; 
      } 
     } 
0
if (e.Control && e.KeyCode == Keys.V) 
{ 

string CopiedContent = Clipboard.GetText(); 
string[] Lines = CopiedContent.Split('\n'); 
int StartingRow = dataGridView1.CurrentCell.RowIndex; 
int StartingColumn = dataGridView1.CurrentCell.ColumnIndex; 
foreach (var line in Lines) 
{ 
    if (StartingRow <= (dataGridView1.Rows.Count - 1)) 
    { 
     string[] cells = line.Split('\t'); 
     int ColumnIndex = StartingColumn; 
     for (int i = 0; i < cells.Length && ColumnIndex <= (dataGridView1.Columns.Count - 1); i++) 
     { 
      dataGridView1[ColumnIndex++, StartingRow].Value = cells[i]; 
     } 
     StartingRow++; 
    } 
}} 
的KeyDown事件
相关问题