我已經看到Datagridview不能啓用複製和粘貼多個單元格的文本,是否有一個簡單的設置來啓用該功能,還是必須使用該鍵處理程序和剪貼板數據存儲以包含該功能。在DataGridView中複製和粘貼多個單元格
用戶想要複製一行內的3個單元格並能夠將它們的文本粘貼到不同的行中。
我已經看到Datagridview不能啓用複製和粘貼多個單元格的文本,是否有一個簡單的設置來啓用該功能,還是必須使用該鍵處理程序和剪貼板數據存儲以包含該功能。在DataGridView中複製和粘貼多個單元格
用戶想要複製一行內的3個單元格並能夠將它們的文本粘貼到不同的行中。
好吧,我得到了一個解決方案,但它並沒有被粘貼細胞測試進行的跨多個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++;
}
}
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;
}
}
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事件