使用 sender 和 e 传递更多参数

Pass more arguments with sender and e?

本文关键字:参数 sender 使用      更新时间:2023-09-26

我在 c# 代码中有一个函数,如下所示:

protected void UploadFile(Object s, EventArgs e)
{
blah blah blah
}

并且此函数会将文件上传到服务器。

我像这样调用函数:

<asp:Button ID="uploadButton" runat="server" Text="Upload!" OnClick="UploadFile"/>

我想将另一个参数传递给函数,它将是文件的名称。

但是我试图将其添加到UploadFile中,但它不起作用,我该怎么做?谢谢。

这似乎很奇怪,因为您不需要将文件名发送到UploadFile函数。您可以在UploadFile函数本身中使用文件名。

protected void UploadFile(Object s, EventArgs e)
{
   // var file = ......
}

另一方面,如果从另一个控件获取文件名,则可以在 UploadFile 函数中从此控件获取文件名。

protected void UploadFile(Object s, EventArgs e)
{
   var file = textboxX.Text;
}

这是一个附加到您的Button的事件。不应像方法一样调用事件,而是可以将方法逻辑提取到单独的方法,然后使用参数调用该方法。就访问FileName而言,您可以从文件文本框访问它(可能您正在使用一个)

protected void UploadFile(Object s, EventArgs e)
{
UploadFileMethod(yourFileTextBox.Text);
}
private void UploadFileMethod(string FileName)
{
 //upload logic
}

并从其他地方调用它。

UploadFileMethod("NewFileName");
如果你想

传递很多参数,你应该像这样实现你自己的类:

public class MyEventArgs : EventArgs
{
    public MyEventArgs(params object[] args)
    {
        Args = args;
    }
    public object[] Args { get; set; }
}

您的活动将采用以下形式:

public event EventHandler<MyEventArgs> MyEvent;

要提升您的活动:

MyEvent(this, new MyEventArgs(1, "information"));