110,571
社区成员
发帖
与我相关
我的任务
分享
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;
}
}
}
void Updata(IList<objectItems> ){
//bool hasChecked = false;
//while (!hasChecked)
//{
// if (objectListView1.SelectedObjects.Count == 0)
//objectListView1.SelectedObjects<----就是这里怎么在线程里取得属性返回值,它相当与ListView.Items属性,
//问题在这里,注意我说取值,不是赋值,赋值我知道怎么Invoke或MethodInvoker
// {
// hasChecked = true;// 等待用户操作完成 // }
// else
// {
// Application.DoEvents();//to do other things
// continue;
// }
//}
//用户操作完成了,用委托更新节目数据
}
void Updata(IList<objectItems> ){
//bool hasChecked = false;
//while (!hasChecked)
//{
// if (objectListView1.SelectedObjects.Count == 0)
//objectListView1.SelectedObjects<----就是这里怎么在线程里取得属性返回值,它相当与ListView.Items属性
// {
// hasChecked = true;// 等待用户操作完成 // }
// else
// {
// Application.DoEvents();//to do other things
// continue;
// }
//}
//
}
//跨线程添加listitem
//这里的一些操作生成了一个string[] list.
//习惯用a了- -
MethodInvoker a = ()=>{
foreach (var s in list)
{
listbox.Items.Add (s);
}
};
if (listbox.InvokeRequired)
listbox.Invoke (a);
else
a();