我正在尝试在C#中的Windows窗体DataGridView中添加粘贴功能。我已经有一些工作正常的代码,但只要DataGridView有足够的列和行。
假设我已经复制了一个包含五行的Excel列,并且我希望将其粘贴到DataGridView中有四行的列中,最后一行被截断。我的目标是添加这一行,以便粘贴的值也可以添加。
这是我的代码:
string s = Clipboard.GetText();
string[] lines = s.Split('\n');
int row = dataGridView1.CurrentCell.RowIndex;
int col = dataGridView1.CurrentCell.ColumnIndex;
foreach (string line in lines)
{
if (row < dataGridView1.RowCount && line.Length >0)
{
string[] cells = line.Split('\t');
for (int i = 0; i < cells.GetLength(0); ++i)
{
if (col + i < this.dataGridView1.ColumnCount)
{
dataGridView1[col + i, row].Value = Convert.ChangeType(cells[i], dataGridView1[col + i, row].ValueType);
}
else
{
break;
}
}
row++;
}
else
{
break;
}
}
答案 0 :(得分:0)
此代码现在解决了我的问题:
string s = Clipboard.GetText();
string[] lines = s.Split('\n');
int row = dataGridView1.CurrentCell.RowIndex;
int col = dataGridView1.CurrentCell.ColumnIndex;
while (lines.Length != (dataGridView1.RowCount -row))
{
dt.Rows.Add();
}
foreach (string line in lines)
{
if (row < dataGridView1.RowCount && line.Length >0)
{
string[] cells = line.Split('\t');
while(cells.Length != (dataGridView1.ColumnCount - col))
{
dt.Columns.Add();
}
for (int i = 0; i < cells.GetLength(0); ++i)
{
if (col + i < this.dataGridView1.ColumnCount)
{
dataGridView1[col + i, row].Value = Convert.ChangeType(cells[i], dataGridView1[col + i, row].ValueType);
}
else
{
break;
}
}
row++;
}
else
{
break;
}
}