多线程中如何invoke获得控件的属性值,紧急求解!
private void Form1_Load(object sender, EventArgs e)
{
objectListView1.Items.Clear();
objectListView1.Items.Add("1");
objectListView1.Items.Add("2");
objectListView1.Items.Add("3");
objectListView1.Items.Add("4");
objectListView1.Items.Add("5");
}
private void button1_Click(object sender, EventArgs e)
{
Thread sd = new Thread(new ThreadStart(CountItems));
sd.Start();
}
List<string> checkedselectedItems = new List<string>();
private void CountItems() {
ISynchronizeInvoke sync = objectListView1;
if (sync.InvokeRequired) {
//how to do the invoke method,get Checked Objects Items ?????
//if user checked some items in objectListView1
//I want to do nothing before objectListView1.SetObjects ,
// if do objectListView1.SetObjects and that objectListView1.CheckedObjects.Count > 0 ,
//
//bool hasChecked = false;
//while (!hasChecked)
//{
// if (objectListView1.SelectedObjects.Count == 0)
// {
// hasChecked = true;// to Waiting
// }
// else
// {
// Application.DoEvents();//to do other things
// continue;
// }
//}
/*
我的意思就是在这里,如果要刷新、更新ListView界面的列表值。而界面已有用户选中项目,为了不让刷新、更新界面冲掉选中项(不使选中项失效)
所以让刷新、更新界面在循环中等待,直到用户没有选中
*/
} else {
checkedselectedItems = objectListView1.CheckedObjects as List<string>;// objectListView1.SelectedObjects;
}
}
}
...全文
相关推荐
c#多线程中子线程动态改变ui控件
pdf版
别再让UI卡死!用Dispatcher.Invoke和BeginInvoke搞定C# WPF/Silverlight跨线程更新
本文详细介绍了在C# WPF/Silverlight开发中如何使用Dispatcher.Invoke和BeginInvoke实现跨线程更新UI,避免界面卡死。通过对比同步和异步调用的优缺点,结合实际代码示例和性能优化建议,帮助开发者高效处理后台线程与UI线程的交互问题。
C#中statusStrip1控件的高级应用与实战技巧
本文深入探讨了C# WinForms开发中statusStrip1控件的高级应用与实战技巧。文章不仅介绍了其作为状态栏的基础功能,更重点讲解了如何通过多线程安全更新、动态信息格式化、自定义控件集成以及进度条高级用法,将statusStrip1打造成一个功能强大的用户交互与信息反馈中心,从而显著提升桌面应用的专业度和用户体验。
C#窗体中Invoke和BeginInvoke方法详解
C_窗体中Invoke和BeginInvoke方法详解
c#多线程利用委托更新控件内容
该文档给出了在不同线程间实时更新控件textbox数据的代码,利用了委托(delegate)



