在 WPF 应用程序中设置数据后,如何在剪贴板中维护数据



>我正在尝试将剪贴板的文本值设置为.NET 4.7.2上的WPF应用程序中的字符串变量的值。 如果我调试应用程序并在保存剪贴板值后立即停止执行,则该值位于剪贴板中,我可以按预期粘贴它。 如果我继续执行,那么该值将被擦除。 例如,这是我可以用来测试的代码:

public void CopyToClipboard()
{
string temp = "testntestntest";
System.Windows.Clipboard.SetText(temp);
}

如您所见,应该粘贴三行。 当我在保存到剪贴板后立即停止执行时,我会看到如下所示的输出:

test
test
test

如果我继续执行(通过按 F5 或 Visual Studio 中的"继续"按钮(,那么当我粘贴时,我会得到三行"\t"选项卡。 所以,我的三行仍然存在,但文本已被删除。

谁能帮我解决这个问题。 是什么导致我丢失剪贴板中的数据?

我编写了一个快速的 Linqpad 脚本,它只包含以下行:

System.Windows.Clipboard.SetText("Hello");

我的剪贴板已成功设置为"Hello",并在程序退出后保持这种状态。您的应用程序中是否有其他内容正在修改剪贴板?

检查这个

https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.clipboard.settext?redirectedfrom=MSDN&view=netframework-4.8#System_Windows_Forms_Clipboard_SetText_System_String_

public String SwapClipboardHtmlText(String replacementHtmlText)
{
String returnHtmlText = null;
if (Clipboard.ContainsText(TextDataFormat.Html))
{
returnHtmlText = Clipboard.GetText(TextDataFormat.Html);
Clipboard.SetText(replacementHtmlText, TextDataFormat.Html);
}
return returnHtmlText;
}

剪贴板类只能在设置为单个线程的线程中使用 公寓(STA(模式。若要使用此类,请确保 Main 方法 用 STAThreadAttribute 属性进行标记。

最新更新