加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何正确地将输入参数传递给C#中的事件处理程序方法?

发布时间:2020-12-16 01:28:38 所属栏目:百科 来源:网络整理
导读:我是C#和.NET的新手,我有以下问题. 在我的代码中,我有这样的事情: Table table = new Table();lstLabelType.SelectedIndexChanged += new System.EventHandler(SelectDocumentTypeChanged); 将事件处理程序附加到视图中的下拉元素. 因此,当用户将所选值更改
我是C#和.NET的新手,我有以下问题.

在我的代码中,我有这样的事情:

Table table = new Table();

lstLabelType.SelectedIndexChanged += new System.EventHandler(SelectDocumentTypeChanged);

将事件处理程序附加到视图中的下拉元素.

因此,当用户将所选值更改为此下拉列表时,将执行SelectDocumentTypeChanged()方法,此方法:

private void SelectDocumentTypeChanged(object sender,EventArgs e)
{
    Debug.WriteLine("SelectDocumentTypeChanged() STARTED");

    SPWeb contextWeb = SPContext.Current.Web;

    DropDownList listaTipiDocumenti = (DropDownList)sender;
    tipoDocumentoSelezionato = listaTipiDocumenti.SelectedValue;
    this.renderizzaEtichetteFacoltative(tipoDocumentoSelezionato,table);

    string url = contextWeb.Url;
    string link = url + "/ARXEIA WEBPART/Stampa Etichetta.aspx?IsDlg=1&postazione=" + macchina + "&tipoDoc=" + tipoDocumentoSelezionato;
    SPUtility.Redirect(link,SPRedirectFlags.Default,Context);


}

现在我有一个问题.我必须将在我的代码中创建的Table表对象传递给此事件处理程序方法,因为在此方法中我必须使用它.

我该如何正确实现此行为?当用户更改下拉列表中的值时,如何自动调用此Table表对象到SelectDocumentTypeChanged()方法?

解决方法

尝试编写如下代码:

Table table = new Table();

lstLabelType.SelectedIndexChanged += (sender,e) =>
{
    Debug.WriteLine("SelectDocumentTypeChanged() STARTED");

    SPWeb contextWeb = SPContext.Current.Web;

    DropDownList listaTipiDocumenti = (DropDownList)sender;
    tipoDocumentoSelezionato = listaTipiDocumenti.SelectedValue;
    this.renderizzaEtichetteFacoltative(tipoDocumentoSelezionato,Context);
};

现在您可以直接在事件处理程序中使用表.

您甚至可以立即忽略发件人并执行此操作:

lstLabelType.SelectedIndexChanged += (s,e) =>
{
    Debug.WriteLine("SelectDocumentTypeChanged() STARTED");

    SPWeb contextWeb = SPContext.Current.Web;

    tipoDocumentoSelezionato = lstLabelType.SelectedValue;
    this.renderizzaEtichetteFacoltative(tipoDocumentoSelezionato,Context);
};

如果要保留单独的方法,可以执行此操作:

Table table = new Table();

lstLabelType.SelectedIndexChanged += (o,e) => SelectDocumentTypeChanged(lstLabelType,table);


private void SelectDocumentTypeChanged(DropDownList lstLabelType,Table table)
{
    Debug.WriteLine("SelectDocumentTypeChanged() STARTED");

    SPWeb contextWeb = SPContext.Current.Web;

    tipoDocumentoSelezionato = lstLabelType.SelectedValue;
    this.renderizzaEtichetteFacoltative(tipoDocumentoSelezionato,Context);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读