嗨,我正在尝试将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进行此操作,结果是相同的,但是按钮上的文本会发生应有的变化。
看起来完全是me脚的问题,但是我已经花了将近5个小时的时间来搜寻,阅读Microsoft文档等,因此我能得到的最接近的是this,因为我看到建议的东西已经实现了。
最佳答案
OnNewTextFound
事件在与UI分开的线程上触发,因此您尝试更新UI失败。在另一个线程中引发异常,中止该方法的其余部分,但您的UI线程继续执行。
您必须调用Invoke()
才能在UI线程上重新执行代码:
listBox1.Invoke(new MethodInvoker(delegate { listBox1.Items.Add(eventArg); }));
关于c# - 无法将字符串添加到列表框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30227008/