上次的问的是如果在线程安全中传递2个以上参数,非常感谢大侠们的帮忙。
http://topic.csdn.net/u/20080418/21/42fc2f99-1367-4fdf-bddc-2aa5f50dcb73.html现在本人又遇到新问题了,就是如何实现带返回值的函数啊 上面链接中的都是void delegate ListViewItem setListViewItemsCallBack(ListView sender, int i); private ListViewItem setListViewItems(ListView sender, int i)
{
if (sender.InvokeRequired)
{
setListViewItemsCallBack b = new setListViewItemsCallBack(setListViewItems);
return this.Invoke(b, new object[] { sender, i });
}
else
{
return sender.Items[i];
}
}
出错提示:
无法将类型“object”隐式转换为“System.Windows.Forms.ListViewItem”。存在一个显式转换(是否缺少强制转换?)把object 改成ListViewItem 也一样出错。
http://topic.csdn.net/u/20080418/21/42fc2f99-1367-4fdf-bddc-2aa5f50dcb73.html现在本人又遇到新问题了,就是如何实现带返回值的函数啊 上面链接中的都是void delegate ListViewItem setListViewItemsCallBack(ListView sender, int i); private ListViewItem setListViewItems(ListView sender, int i)
{
if (sender.InvokeRequired)
{
setListViewItemsCallBack b = new setListViewItemsCallBack(setListViewItems);
return this.Invoke(b, new object[] { sender, i });
}
else
{
return sender.Items[i];
}
}
出错提示:
无法将类型“object”隐式转换为“System.Windows.Forms.ListViewItem”。存在一个显式转换(是否缺少强制转换?)把object 改成ListViewItem 也一样出错。
delegate ListViewItem setListViewItemsCallBack(ListView sender, int i); private ListViewItem setListViewItems(ListView sender, int i)
{
if (sender.InvokeRequired)
{
setListViewItemsCallBack b = new setListViewItemsCallBack(setListViewItems);
return this.Invoke(b, new object[] { sender, i }) as ListViewItem;
}
else
{
return sender.Items[i];
}
}
试试:return sender as ListViewItem;
在看ing funlove999的链接
在一个setListViewItemsCallBack委托里面,再创建委托。应该不是好办法。请详细描述下你的需求。
现在我要在线程中调用界面控件的方法 如类似 ListViewItem ddd=listview.items[i];这样的功能。 因为在线程中不能直接对listview操作。
不知道我表达的是否清楚,刚学c#,谢谢大家。
我看明白60-70% 但还是不知道我的功能怎么实现。