无法从剪贴板获取文字| C#

时间:2018-11-03 19:14:07

标签: 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";
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您正在使用后台线程(BackGroundWorker.DoWork)访问UI线程上的控件。 只能从UI线程访问控件。

尝试添加一个BackGroundWorker.ProgressChanged事件并从中访问您的控件。 ProgressChanged从UI线程运行。

从您的评论中

编辑

不,那不是我的意思,您正在创建一个新的背景工作人员,您应该使用现有的背景工作人员,如下所示:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
    backgroundWorker1.WorkerReportsProgress = true;
    backgroundWorker1.ReportProgress(1);
}

此外,您需要将文本复制到剪贴板。