c# - 无法从剪贴板获取文本 | C#
问题描述
它没有向我显示里面的任何东西logBox
,它只是保持空白
namespace Clipboard_Logger
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
backgroundWorker1.RunWorkerAsync();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
logBox.SelectionStart = logBox.TextLength;
logBox.ScrollToCaret();
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
while (true)
{
if (Clipboard.ContainsText(TextDataFormat.Text))
logBox.Text = logBox.Text + Clipboard.GetText(TextDataFormat.Text) + "\r\n";
}
}
}
}
解决方案
您正在使用后台线程 ( BackGroundWorker.DoWork
) 来访问 UI 线程上的控件。控件只能从 UI 线程访问。
尝试添加一个BackGroundWorker.ProgressChanged
事件并从中访问您的控件。ProgressChanged
从 UI 线程运行。
从您的评论中编辑:
不,这不是我的意思,您正在创建一个新的后台工作人员,您应该使用现有的后台工作人员,如下所示:
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
backgroundWorker1.WorkerReportsProgress = true;
backgroundWorker1.ReportProgress(1);
}
此外,您需要将文本复制到剪贴板。
推荐阅读
- batch-file - 如何运行脚本并在运行之前输入参数
- python - 如何批量替换python中许多文件中的行?
- seo - 添加本地业务架构时,同一页面的不同标记中具有相同的@type业务是否错误?
- wso2is - WSO2 身份服务器:WSO2 是否支持 SSIS 和 DID?
- azure-iot-hub - 调用 Azure IoT Direct 方法时 URL 的 Api 版本
- go - 我有查询如何将查询转换为 dsl
- state - 在 AnyLogic 中,如何在执行 CraneProgram 后将起重机返回到自动模式(空闲状态)?
- pandas - 两个多索引切片上的数据帧乘法()操作上的不正确广播(?)
- python-3.x - ImportError:在 MacOS 上安装 Coral
- angular - 有人可以给我指一个网络图,描述 Azure 中 vm、nic、nsg、rg、vnet、子网、公共 ip、私有 ip 之间的关系吗?