无法将字符串添加到列表框
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); }));
您好,我正在尝试将 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); }));