1

LeCmb_Statut_SelectedIndexChanged メソッドに別の値を渡したいのですが、どうすればよいですか?

私はコードを持っています:

SqlDataReader reader = comm.ExecuteReader(); 
while (reader.Read())
{
   ...
   DropDownList LeCmb_Statut = new DropDownList();
   string tempLabel = reader["LIBELLE"].ToString();
   string templabelVeh = reader["LIBVEH"].ToString()
}

これらの一時変数をに渡すにはどうすればよいLeCmb_Statut_SelectedIndexChangedですか?

LeCmb_Statut.SelectedIndexChanged += new EventHandler(LeCmb_Statut_SelectedIndexChanged);
4

2 に答える 2

2

ドロップダウンリストの Tag プロパティを使用できます。まず、単純な DTO を作成します。

public class LabelDTO
{
   public string Label {get;set;}
   public string LabelVeh {get;set;}
} 

それから:

while (reader.Read())
{
   ...
   DropDownList LeCmb_Statut = new DropDownList();
   LabelDTO lbl= new LabelDTO(){Label=reader["LIBELLE"].ToString(), LabelVeh=reader["LIBVEH"].ToString()};

    LeCmb_Statut.Tag=lbl;
}

次に、LeCmb_Statut_SelectedIndexChanged 内:

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.

     }
}
于 2011-02-09T10:28:27.043 に答える
2

匿名メソッドを使用してそれらをキャプチャできます。

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);
于 2011-02-09T10:28:35.160 に答える