2010-11-02 58 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事件
相關問題