我有一个简单的数据网格视图,我正在复制其内容,如下所示:
当我将其粘贴到记事本时,它显示如下:
如何删除1杰克和3汤姆之间的空行?
我正在使用此代码进行复制:
private void copySelectedToolStripMenuItem_Click(object sender, EventArgs e)
{
if (this.dataGridView1.GetCellCount(DataGridViewElementStates.Selected) > 0)
{
try
{
Clipboard.SetDataObject(
this.dataGridView1.GetClipboardContent());
}
catch (System.Runtime.InteropServices.ExternalException)
{
// "The Clipboard could not be accessed. Please try again.";
}
}
}
有没有更好的方法只复制选定的? 请帮助。
答案 0 :(得分:1)
我解决了以下问题:
if (this.dataGridView1.SelectedRows.Count > 0)
{
StringBuilder ClipboardBuillder = new StringBuilder();
foreach (DataGridViewRow Row in dataGridView1.SelectedRows)
{
foreach (DataGridViewColumn Column in dataGridView1.Columns)
{
ClipboardBuillder.Append(Row.Cells[Column.Index].FormattedValue.ToString() + " ");
}
ClipboardBuillder.AppendLine();
}
Clipboard.SetText(ClipboardBuillder.ToString());
}
答案 1 :(得分:1)
我认为更好(更容易)的解决方案就是......
string clipboardText = dataGridView1.GetClipboardContent().GetText();
Clipboard.SetText(clipboardText.Replace("/n/n", "/n"));
未经测试..可能需要改进双换行符/回车..但我怀疑.NET无论如何都会做正确的事。
答案 2 :(得分:0)
您可以遍历所有选定的行:
string clipboard = "";
foreach (DataGridViewRow dgvr in dataGridView1.SelectedRows)
{
foreach (DataGridViewColumn dgvc in dg_autoTestStatus.Columns)
clipboard += dataGridView1.Rows[dgvr.Index].Cells[dgvc.Index].FormattedValue.ToString() + " ";
clipboard += "\n"
}
Clipboard.SetText(clipboard);