首页 新闻 会员 周边

PictureBox 异步加载网络地址,完成时 怎样传递用户参数。

0
悬赏园豆:10 [已解决问题] 解决于 2014-04-18 10:21

PictureBox 异步加载网络图片完成时系统会调用LoadCompleted事件 ,但是怎样为参数类型AsyncCompletedEventArgs 传递用户自定义的参数呢?

刘颖的主页 刘颖 | 初学一级 | 园豆:6
提问于:2013-05-17 16:00
< >
分享
最佳答案
0

你可可以自己写一个类继承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());
        }
    }
}
收获园豆:8
会长 | 专家六级 |园豆:12401 | 2013-05-17 16:46

不是,我是想怎样使用这个AsyncCompletedEventArgs 类型的参数。

刘颖 | 园豆:6 (初学一级) | 2013-05-17 17:40

@刘颖: 要实现什么目的?

会长 | 园豆:12401 (专家六级) | 2013-05-17 17:43

@会长: 我就想当异步加载完图片,就会调用LoadCompleted这个事件,这个事件不是有个参数AsyncCompletedEventArgs e,我想怎么能使用这个参数呢,在msdn上已经给出用法了,但是这个参数我怎么能把我想要传递的值通过这个参数传递呢?

刘颖 | 园豆:6 (初学一级) | 2013-05-20 10:53

@刘颖: 没办法,实例化AsyncCompletedEventArgs是在PictureBox类里完成的,除非重写PictureBox类,自己写个继承自EventArgs的类。

会长 | 园豆:12401 (专家六级) | 2013-05-20 11:20
其他回答(3)
0
AsyncCompletedEventArgs 控制不了,不过也没有必要非要一定在AsyncCompletedEventArgs 传递参数,另一个参数sender 不就是你的PictureBox 嘛,把要传递的参数放在PictureBox的Tag里就可以了。
收获园豆:1
天方 | 园豆:5407 (大侠五级) | 2013-05-20 13:25
0

EAP模式

收获园豆:1
程序诗人 | 园豆:313 (菜鸟二级) | 2013-06-04 15:58
0

通过 sender 完成的。

刘颖 | 园豆:6 (初学一级) | 2013-06-07 16:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册