【发布时间】:2012-02-09 18:57:42
【问题描述】:
我从DataGridView 复制单元格数据时遇到了一个奇怪的问题。我有一个ContextMenuStrip,其中包含一个复制特定字段的选项。当他们从菜单中选择此选项时,值会完全按照应有的方式复制/粘贴。
我要复制到剪贴板的代码:
public static void CopyToClipboard(string value)
{
Clipboard.Clear();
Clipboard.SetText(value);
}
如果我将此值粘贴到任何其他应用程序中并且该值是正确的。
如果我在DataGridView 中选择一个单元格并使用键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 事件并将副本调用到剪贴板,它工作正常,但我不希望每次输入单元格时都复制到剪贴板。似乎问题直接与@987654333 @键。
private void DataGridView_CellEnter(object sender, DataGridViewCellEventArgs e)
{
CopyAccountToClipboard(DataGridView2.CurrentCell.Value.ToString());
}
有人遇到过这样的问题吗?有关如何解决它的任何建议?
【问题讨论】:
-
所以您是说数据单元格的普通 Ctrl+C 以及
KeyDown+Clipboard.SetText在该应用程序中出现混乱? -
是的,这就是我的意思。
-
那么明显的问题是:当您将从记事本复制到该内部应用程序时,它是否也会出现混乱?
-
不,如果我将它添加到记事本,然后从记事本复制到内部应用程序,它工作正常。
-
我会尝试以下操作:在您的应用程序中调用 Clipboard.SetText,向其传递一个固定字符串(而不是 CurrentCell.Value)和各种 TextDataFormat 值。如果可行,请尝试使用 CurrentCell 使用相同的格式。也许 CurrentCell.Value.ToString() 本身是混乱的?如果这不起作用,请从一个完全空白的项目中尝试 Clipboard.SetText;也许这与您当前的应用完全无关。
标签: c# winforms datagridview clipboard