日期:2014-05-18  浏览次数:21045 次

winform dataGridView_RowsAdded事件
我用异步传输 在winform的dataGridView显示图片 用的是dataGridView_RowsAdded事件 可是每次加载事件的时候就加载两回后就自动调转到绑定方法去了,不知道为什么 有没有人给指点迷经
C# code

  private void UserInfo_Load(object sender, EventArgs e)
        {
           
            dataGridView2.DataSource = BindGridview();
        
        }
private void dataGridView2_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            using (WebClient wc = new WebClient())
            {
                //开始异步下载,图片URL路径请根据实际情况自己去指定
                //同时将DataGridView当前行的行号传递过去,用于指定图片显示的CELL
                wc.DownloadDataAsync(new Uri(dataGridView2.Rows[e.RowIndex].Cells["Column2"].Value.ToString()), e.RowIndex);
                //WebClient 下载完毕的响应事件绑定
                wc.DownloadDataCompleted += new DownloadDataCompletedEventHandler(wc_DownloadDataCompleted);
            }
        }
  ///<summary>
        /// 图片下载完毕,显示于对应的CELL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void wc_DownloadDataCompleted(object sender, DownloadDataCompletedEventArgs e)
        {
            ////如果下载过程未发生错误,并且未被中途取消
            if (e.Error == null && !e.Cancelled)
            {
                ////将图片显示于对应的指定单元格, e.UserState 就是传入的 e.RowIndex
                ////e.Result 就是下载结果
                this.dataGridView2.Rows[(int)e.UserState].Cells["V_httppath"].Value = e.Result;
            }
        }



------解决方案--------------------
RowsAdded事件并不是逐行响应的。
http://joeyliu.blog.51cto.com/3647812/800907