我想练习写一个小游戏,大致是用多线创建PictureBox,并将每个图片加到一个Panel中,这个Panel就是一个背景或画布之用,每个图片以不同速度在这个Panel上移动,但编译出错,提示“在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。”  
 
    请大家给个思路,如果有代码最好。

解决方案 »

  1.   

    控件在线程问题上是很特殊的东西,这样多线程是有问题的。 你可以把你的某些与界面无关的逻辑提取出来放在多线程里,但是对界面的操作本质上要在主线程里:控件的创建线程。
    欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
    我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
      

  2.   

    单纯界面的操作看主线程就够了,微软本身对其进行了优化。但是从多线程调用主线程更新界面是有点技巧的,虽然不算难,我的博客里有一片是关于这个的,可以看一看。
    欢迎大家来我的博客作客:http://blog.csdn.net/aafshzj/
    我正在写一系列关于AAF组件框架的文章。该框架能对开发工作提供很多帮助,并极大地提高开发效率。希望大家看一看并提出宝贵建议。
      

  3.   

    aafshzj,
    看了你blog的那篇文章,你是使用了委托来更改控件属性。其实在其它线程也可以直接更改主线程的控件属性,但是却不能PictureBox pb = new PictureBox();panel1.Controls.Add(pb);,不然就会报错“在某个线程上创建的控件不能成为在另一个线程上创建的控件的父级。”你的文章并没有新建控件并加入,不知道在委托里是不是可以?我思考的解决方法是将Panel的实例panel1传入每个线程,playxingxing你试试这样行不行。