【问题标题】:No overload for '' matches delegate 'System.EventHandler''' 没有重载匹配委托 'System.EventHandler'
【发布时间】:2013-10-15 22:15:09
【问题描述】:

这段代码产生了上面的错误,我试图做一些方法将文件发送到 ftp 服务器

public void btnSend_Click(object sender, GridViewCommandEventArgs e)
{


    msgerror = SP.StrSPBUS_DocClient(Convert.ToInt32(e.CommandArgument.ToString()));

    if (msgerror.Equals("Sucess"))
    {
        String Files = SP.OUTSTR_NMDOCUMENT;
        String Address = SP.OUTSTR_FTPCAM;
        String User = SP.OUTSTR_FTPUSER;
        String Pass = SP.OUTSTR_FTPPASS;

        FtpWebRequest request = (FtpWebRequest)WebRequest.Create(Address + "/" + Path.GetFileName(File));
        request.Method = WebRequestMethods.Ftp.UploadFile;
        request.Credentials = new NetworkCredential(User, Pass);
        request.UsePassive = true;
        request.UseBinary = true;
        request.KeepAlive = false;

        var stream = File.OpenRead(Files);
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);
        stream.Close();

        var reqStream = request.GetRequestStream();
        reqStream.Write(buffer, 0, buffer.Length);
        reqStream.Close();
    }
    else
    {
        SP.StrImprimeMessage("Error!");
        return;
    }
}

文件.aspx 这是按钮的代码

<tr class="tabelinner">
            <td class="leftcell" valign="middle">

                    <asp:Button ID="btnSrend" runat="server" Text="Send" CssClass="ButtonLink" ValidationGroup="sending"  CommandArgument="Sending" onclick="btnSend_Click"     />
                <br />
            </td>              
        </tr>

【问题讨论】:

  • 既然您是 SO 新手,请不要忘记为您提供有用的答案,并检查接受的答案是否完全回答您的问题

标签: c# .net


【解决方案1】:

问题在于GridViewCommandEventArgs 应该只是EventArgs

public void btnSend_Click(object sender, EventArgs e)

编辑:

我看到在你的代码中你使用了命令参数,所以如果你想使用它,你应该看到this post

基本上使用onCommand 而不是onClick 或将发送者转换为按钮以获取命令参数,例如:

var argument = ((Button)sender).CommandArgument;

【讨论】:

  • 您应该编辑您的问题并将该答案发布到其中或为此提出一个新问题,但是您当然会遇到一个例外CommandArgument="Sending",该词是一个字符串,您打算如何那是int?你想做什么?或者应该将什么发送到StrSPBUS_DocClient 方法?
【解决方案2】:

按钮点击事件的正确签名是

public void btnSend_Click(object sender, EventArgs e)

但此时您遇到了问题,因为传递的 EventArgs 实例不知道名为 e.CommandArgument 的属性,因此您需要另一种方法来在此事件中使用该值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    相关资源
    最近更新 更多