C# C委托事件处理程序SelectedIndexChanged

C# C委托事件处理程序SelectedIndexChanged,c#,.net,combobox,drop-down-menu,selectedindexchanged,C#,.net,Combobox,Drop Down Menu,Selectedindexchanged,我想将另一个值传递给方法LeCmb\u Statut\u SelectedIndexChanged,如何继续 我有密码: SqlDataReader reader = comm.ExecuteReader(); while (reader.Read()) { ... DropDownList LeCmb_Statut = new DropDownList(); string tempLabel = reader["LIBELLE"].ToString(); string

我想将另一个值传递给方法LeCmb\u Statut\u SelectedIndexChanged,如何继续

我有密码:

SqlDataReader reader = comm.ExecuteReader(); 
while (reader.Read())
{
   ...
   DropDownList LeCmb_Statut = new DropDownList();
   string tempLabel = reader["LIBELLE"].ToString();
   string templabelVeh = reader["LIBVEH"].ToString()
}
如何将这些临时变量传递到LeCmb\u Statut\u SelectedIndexChanged


您可以使用dropdownlist的Tag属性。 首先,创建一个简单的DTO:

public class LabelDTO
{
   public string Label {get;set;}
   public string LabelVeh {get;set;}
} 
然后:

然后在LeCmb\u Status\u选择的索引中更改:

LeCmb_Statut_SelectedIndexChanged (object sender, System.EventArgs e)
{
    LabelDTO labelDTO= ((DropDownList)sender).Tag as LabelDTO ;
    if (labelDTO!=null)
     {
        ///here you can use the label and labelVeh properties.

     }
}

您可以使用dropdownlist的Tag属性。 首先,创建一个简单的DTO:

public class LabelDTO
{
   public string Label {get;set;}
   public string LabelVeh {get;set;}
} 
然后:

然后在LeCmb\u Status\u选择的索引中更改:

LeCmb_Statut_SelectedIndexChanged (object sender, System.EventArgs e)
{
    LabelDTO labelDTO= ((DropDownList)sender).Tag as LabelDTO ;
    if (labelDTO!=null)
     {
        ///here you can use the label and labelVeh properties.

     }
}

您可以使用匿名方法捕获它们:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate {
    // do something fun with   tempLabel  and templabelVeh 
};
对于较小的块或较长的代码,这可以是内联的-只需传递给一个方法:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate {
    DoSomethingFun(tempLabel,templabelVeh);
};
或者,如果您需要发件人/参数:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate(object sender, EventArgs args) {
    DoSomethingFun(sender,args,tempLabel,templabelVeh);
};
或在C 3.0中:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += (sender, args) =>
    DoSomethingFun(sender,args,tempLabel,templabelVeh);

您可以使用匿名方法捕获它们:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate {
    // do something fun with   tempLabel  and templabelVeh 
};
对于较小的块或较长的代码,这可以是内联的-只需传递给一个方法:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate {
    DoSomethingFun(tempLabel,templabelVeh);
};
或者,如果您需要发件人/参数:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += delegate(object sender, EventArgs args) {
    DoSomethingFun(sender,args,tempLabel,templabelVeh);
};
或在C 3.0中:

string tempLabel = reader["LIBELLE"].ToString();
string templabelVeh = reader["LIBVEH"].ToString()
LeCmb_Statut.SelectedIndexChanged += (sender, args) =>
    DoSomethingFun(sender,args,tempLabel,templabelVeh);

@user609511:请详细描述您拥有的内容以及您希望达到的目标。目前,您正在为每条记录创建一个新的DropDownList。将一个项目添加到预先存在的DropDownList中不是更有意义吗?@user609511:请详细描述您拥有的内容以及您希望访问的内容。目前,您正在为每个记录创建一个新的DropDownList。将一个项目添加到预先存在的DropDownList中不是更有意义吗?