从DataGridView复制单元格数据时遇到了一个奇怪的问题.我有一个ContextMenuStrip,它包含一个复制特定字段的选项.当他们从菜单中选择此选项时,值将完全按照原样复制/粘贴.
我要复制到剪贴板的代码:
public static void CopyToClipboard(string value)
{
Clipboard.Clear();
Clipboard.SetText(value);
}
如果我取这个值并将其粘贴到任何其他应用程序中,并且值是正确的.
如果我在DataGridView中选择一个单元格并使用Keys Ctrl-C复制到剪贴板,我的问题就会发挥作用.复制到剪贴板的值在word,notepad,excel中正确显示,但我们有一个内部应用程序,我们尝试将值粘贴到它,它变成了混乱的字符.
复制的值为12345678,其他应用程序的结果变为-§-ý-:pC | yV-k²-û
我试图在DataGridView上创建一个KeyDown事件,它将验证它是一个键控的Ctrl-C,然后将我的副本调用到剪贴板代码,但值也会发生同样的事情.
private void DataGridView_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.C)
CopyToClipboard(DataGridView2.CurrentCell.Value.ToString());
}
如果我使用CellEnter事件并将副本调用到剪贴板,它工作正常,但我不希望每次输入单元格时都不复制到剪贴板..似乎问题直接与Ctrl-C键.
private void DataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
{
CopyAccountToClipboard(DataGridView2.CurrentCell.Value.ToString());
}
有没有人有这样的问题?有关如何解决它的任何建议?
解决方法:
我的猜测是你的其他应用程序无法处理Unicode.尝试更改您的方法以ANSI格式设置文本:
public static void CopyToClipboard(string value)
{
Clipboard.Clear();
Clipboard.SetText(value, TextDataFormat.Text);
}
编辑:然后我的第二个猜测是,当按下Ctrl C时,DataGridView会以多种格式复制文本,而您的其他应用程序由于存在不期望的格式而变得混乱.
您可以尝试在表单中添加一个按钮,在单击时执行以下逻辑吗?
string text = Clipboard.GetText(TextDataFormat.Text);
Clipboard.Clear();
Clipboard.SetText(text, TextDataFormat.Text);
然后尝试:
>使用Ctrl C将单元格复制到剪贴板
>单击所述按钮
>将文本粘贴到其他应用程序中
不要在DataGridView_KeyDown事件处理程序中测试上面的代码.