PictureBox 异步加载网络图片完成时系统会调用LoadCompleted事件 ,但是怎样为参数类型AsyncCompletedEventArgs 传递用户自定义的参数呢?
你可可以自己写一个类继承PictureBox,自己写个事件和事件参数,不过我猜测你是想在LoadCompleted事件中得到关于图片的信息,如果是这样,以下代码就可以了:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Threading; namespace ThreadTest { public partial class Form1 : Form { private String _text = String.Empty; public Form1() { this.InitializeComponent(); this.pictureBox1.LoadCompleted += new AsyncCompletedEventHandler(pictureBox1_LoadCompleted); this.pictureBox1.LoadAsync("http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif"); } void pictureBox1_LoadCompleted(object sender, AsyncCompletedEventArgs e) { PictureBox pictureBox = sender as PictureBox; MessageBox.Show(pictureBox.ImageLocation); MessageBox.Show(pictureBox.Image.Width.ToString()); } } }
不是,我是想怎样使用这个AsyncCompletedEventArgs 类型的参数。
@刘颖: 要实现什么目的?
@会长: 我就想当异步加载完图片,就会调用LoadCompleted这个事件,这个事件不是有个参数AsyncCompletedEventArgs e,我想怎么能使用这个参数呢,在msdn上已经给出用法了,但是这个参数我怎么能把我想要传递的值通过这个参数传递呢?
@刘颖: 没办法,实例化AsyncCompletedEventArgs是在PictureBox类里完成的,除非重写PictureBox类,自己写个继承自EventArgs的类。
AsyncCompletedEventArgs 控制不了,不过也没有必要非要一定在AsyncCompletedEventArgs 传递参数,另一个参数sender 不就是你的PictureBox 嘛,把要传递的参数放在PictureBox的Tag里就可以了。
EAP模式
通过 sender 完成的。