2010-11-02 13 views
5

के भीतर एकाधिक सेल्स कॉपी और पेस्ट करें मैंने देखा है कि डेटाग्रिडव्यू एक से अधिक कोशिकाओं के टेक्स्ट को कॉपी और पेस्ट करने में सक्षम नहीं है, क्या यह सक्षम करने के लिए एक सरल सेटिंग है या मुझे कुंजी का उपयोग करना है हैंडलर और क्लिपबोर्ड डेटा स्टोर उस कार्यक्षमता को शामिल करने के लिए।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 घटना है