无法将字符串添加到列表框

Can't add strings to listbox

您好,我正在尝试将 this 库的输出收集到列表框中。

这是测试项目的部分代码,我已经尝试修改:

public partial class Form1 : Form
{
    D.Net.Clipboard.ClipboardManager Manager;

    public Form1()
    {
        InitializeComponent();
        Manager = new D.Net.Clipboard.ClipboardManager(this);
        Manager.Type = D.Net.Clipboard.ClipboardManager.CheckType.Text;
        Manager.OnNewTextFound += (sender, eventArg) =>
        {
            button1.Text = eventArg;            //just testing, working correctly
            listBox1.Items.Add(eventArg);       //does not show neither result nor any error
            MessageBox.Show(String.Format("New text found in clipboard : {0}", eventArg));
        };
    }

    private void button1_Click(object sender, EventArgs e)
    {
        listBox1.Items.Add("test");             //working correctly
    }
}

问题是当我试图将项目添加到列表中时它什么也没做,而且更多的代码行(在这个函数中)根本没有 运行。

我试图通过一些自定义 类 和不同的表达式来修复它,但对我来说没有任何效果(是的,我是个菜鸟)。也尝试用 textBox 来做,结果是一样的,但是按钮上的文本会改变。

看起来完全是个蹩脚的问题,但我已经花了将近 5 个小时通过谷歌搜索、阅读微软文档,所以,我能得到的最接近的是 this,因为我可以看到那里建议的东西已经实现了。

您不能在构造表单的过程中向列表框添加项目。您需要将代码移动到 Load 事件中。

您正在将 EventArgs 添加到列表框的项目列表中。是否有可以添加的 eventArgs.[someString]?

OnNewTextFound 事件在与 UI 不同的线程上触发,因此您尝试更新 UI 失败。在另一个线程中抛出异常,中止该方法的其余部分,但您的 UI 线程继续执行。

您必须调用 Invoke() 才能在 UI 线程上执行代码:

listBox1.Invoke(new MethodInvoker(delegate { listBox1.Items.Add(eventArg); }));