无法将类型隐式转换为system.net

本文关键字:转换 system net 类型 | 更新日期: 2023-09-27 18:21:09

当我试图从远程服务器下载文件时,我的程序中出现错误,我正在使用System.Net Lib,它在转换到它时遇到问题。

我收到错误消息

无法隐式转换类型"System.ComponentModel.AsyncCompletedEventHandler"到System.Net.DownloadProgressChangedEventHandler的

在代码块的最后一行

AsyncCompletedEventHandler(client_DownloadFileCompleted);

错误行^

Form.cs V

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.Net;
namespace Buildcraft_Installer
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
        }
        private void btnStartDownload_Click(object sender, EventArgs e)
        {
            prgDownload.Visible = true;
                WebClient client = new WebClient();
                client.DownloadProgressChanged += new
                DownloadProgressChangedEventHandler(client_DownloadProgressChanged);
                client.DownloadProgressChanged += new
                AsyncCompletedEventHandler(client_DownloadFileCompleted);

如果有人能解决这个问题或找到解决方法来获得同样的结果,我将不胜感激:)

无法将类型隐式转换为system.net

您可能想在最后一行写client.DownloadFileCompleted

当前有两个对DownloadProgressChanged的调用,一个调用具有匹配的委托类型(DownloadProgressChangedEventHandler),另一个调用的委托类型错误(AsyncCompletedEventHandler)。

您在订阅最后一行的事件时使用了不正确的delegate

如果使用Visual Studio,请编写+=并按Tab键,这样将生成具有正确签名的方法。

但我看到你上面的几行已经订阅了同一个活动,所以我的印象是你没有使用正确的活动来实现你想要实现的目标。

应该有DownloadFileCompleted事件。我认为那就是你想要的。