[C#] - DataGridView 貼上多格儲存格

摘要:[C#] - DataGridView 貼上多格儲存格

繼上一篇[C#] - DataGridView 使用ctrl+V貼上儲存格

這篇要接著介紹如何"貼上多格儲存格"

為了達成下圖的功能撰寫了貼上多格儲存格的code

 

if ((e.Modifiers == Keys.Control) && (e.KeyCode == Keys.V) && (dgv_addtable.CurrentCell != null))//Ctrl+V貼上指令
{
    Match m = Regex.Match(Clipboard.GetText(),"(.+)\r?\n?");
    if (m.Success)
    {
        int i = 0, j = 0;
        while ((m.Groups[1].Value!= "") && (dgv_addtable.RowCount-1>dgv_addtable.CurrentCell.RowIndex+i))
        {
if (m.Groups[1].Value.Contains("\t"))
{
    foreach (string column in m.Groups[1].Value.Replace("\r\n", "").Split('\t'))
    {
        if ((dgv_addtable.ColumnCount - 1) > (dgv_addtable.CurrentCell.ColumnIndex + j))
        {
dgv_addtable[dgv_addtable.CurrentCell.ColumnIndex + j, dgv_addtable.CurrentCell.RowIndex + i].Value = column;
j++;
        }
    }
    j = 0;
}
else
    dgv_addtable[dgv_addtable.CurrentCell.ColumnIndex + j, dgv_addtable.CurrentCell.RowIndex + i].Value = m.Groups[1].Value;
i++;
m = m.NextMatch();
        }
    }
    else
        dgv_addtable[dgv_addtable.CurrentCell.ColumnIndex, dgv_addtable.CurrentCell.RowIndex].Value = Clipboard.GetText();
}