传递列表以使用(对象发送者,EventArgs e)

时间:2015-11-13 12:14:08

标签: c# asp.net

我有一个函数RadioButtonList_SelectedIndexChanged,在这个函数中我创建了一个列表,我想将List传递给另一个函数:DropDownList_SelectedIndexChanged(object sender, EventArgs e)

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

在后面的代码中创建私有List变量,将数据从radiobuttonchanged上的数据库检索到该变量,然后在dropdownlist_selectedindexchanged函数中使用该变量。我认为这比使用(object sender,EventArgs e)操作更好;

private List list1;

答案 1 :(得分:1)

您有两种可能的解决方案:

将List对象作为事件发件人发送(不推荐)

您可以利用事件处理程序获取object参数,该参数是事件的发送者。您可以使用此参数传递列表:

DropDownList_SelectedIndexChanged(object sender, EventArgs e)
{
      // You'll have to downcast the object
      List<string> myList = sender as List<string>;
}

您可以从单选按钮事件处理程序中调用它:

RadioButtonList_SelectedIndexChanged(obejct sender, EventArgs e)
{
    // ...
    DropDownList_SelectedIndexChanged(yourCreatedList, null);
}

这不推荐使用,因为这个参数应该保存发送者对象,在你的情况下,它是你的单选按钮,而不是列表。

创建您自己的EventArgs(推荐)

您可以创建自己的EventArgs实施:

public class DropDownListEventArgs : EventArgs
{
     public List<string> List;
}

然后,您应该修改事件处理程序签名:

DropDownList_SelectedIndexChanged(object sender, DropDownListEventArgs e)
{
      List<string> myList = e.List;
}

您可以从单选按钮事件处理程序中调用它:

RadioButtonList_SelectedIndexChanged(obejct sender, EventArgs e)
{
    // ...
    DropDownList_SelectedIndexChanged(yourRadioButton, new DropDownListEventArgs()
    {
         List = yourCreatedList
    });
}

P.S。:我假设您的列表属于List<string>类型,但它可以是任何类型。