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

时间:2015-05-13 23:43:00

标签: c# winforms 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,因为我可以看到已经实施过的建议。< / p>

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

您正在将ListArgs添加到ListBox的Items列表中。是否有可以添加的eventArgs。[someString]?

答案 2 :(得分:-1)

在构建表单期间,您无法将项目添加到列表框中。您需要将代码移动到Load事件中。