datagridview牢房复制僵局,当时有数百万行

问题描述 投票:0回答:1

您可以通过加载网格,滚动到最后一行并使用CTRL+C复制一些单元格内容来重新创建问题。您会注意到UI僵局,CPU利用率尖峰和UI永远不会恢复。

i我自己尝试覆盖CTRL+C动作,以查看是否可以解决该问题,但此方法也发生了同样的僵局:

grid.KeyDown += (object? sender, KeyEventArgs e) => { if (e.Modifiers.HasFlag(Keys.Control) && e.KeyCode.HasFlag(Keys.C)) { Clipboard.SetDataObject(grid.GetClipboardContent()); e.Handled = true; } base.OnKeyDown(e); };
    

尽管我不知道为什么会发生这种解决方法。

如果您检查

Clipboard.setDataObject
正在使用的方法,您会注意到它的覆盖率为
open
c# winforms .net-8.0
1个回答
0
投票
public static void SetDataObject(object data, bool copy)

。此参数具有以下描述:

True如果您希望数据退出后保留在剪贴板上;否则,false.

不确定为什么,而是将
open
参数设置为

true
而不是默认

false

解决问题:

grid.KeyDown += (object? sender, KeyEventArgs e) => { if (e.Modifiers.HasFlag(Keys.Control) && e.KeyCode.HasFlag(Keys.C)) { Clipboard.SetDataObject(grid.GetClipboardContent(), true); e.Handled = true; } base.OnKeyDown(e); };

I仅确认
copy
参数与此问题有关。另一种方法覆盖了
retryTimes

retryDelay
不会影响这种行为。
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.