日期:2014-05-19  浏览次数:20848 次

窗口不能移动
我在窗口里面添加了listview控件,当运行使得listview里面的内容在不断的更新变化的时候,我按窗口中所有的按钮,都毫无反应,并且也不能移动窗口了

我该怎么做呢?

------解决方案--------------------
不断的添加数据到控件中,阻塞了消息,用线程吧
------解决方案--------------------
有可能是读取数据比较耗时间,阻塞了消息,你可以把读取数据的操作抛到另外的线程上去做,但一定记着数据读回来之后更新listview的操作还要用Invoke把它同步回主线程.
------解决方案--------------------
不断的更新变化时,应该占用了许多资源,所以产生不能移动的假象
------解决方案--------------------
private void button1_Click(object sender, System.EventArgs e)
{
start();
}
private void count()
{}

private void start()
{
Thread t = new Thread(new ThreadStart(count));
t.Start();
}
------解决方案--------------------
1.看看你在往listView里面添加数据的前后有没有用BeginUpdate/EndUpdate方法,如果没有加上。
listView1.BeginUpdate();
。。。listView1.Items.Add();
listView1.EndUpdate();

2. 看看BeginUpdate/EndUpdate之间有没有从数据库查询,或者文件/网络的读写操作,如果有,按照RedGoldFish大哥的说法移到后台线程去做,可以使用BackgroundWorker来帮助协调后台工作线程和前台UI线程之间的通信。
------解决方案--------------------
UI线程被阻塞,建议向ListView填充数据时用后台线程