Tar*_*lah 0 c# events parameter-passing event-handling winforms
我从数据库加载了一些带有图像位置的Picturebox,我想将参数(价格和名称)传递给循环中的click事件处理程序
代码看起来像这样:
private void Caisse_Load(object sender, EventArgs e)
{
int repetition = 0;
int rep = 1;
textMontant.Text = mont;
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ToString());
con.Open();
SqlCommand cmd = new SqlCommand( "select desig_prd,prix_prd ,image from Produit ",con);
using (SqlDataReader reader1 = cmd.ExecuteReader())
{
while (reader1.Read())
{
if (repetition % 3== 0)
repetition = 0;
PictureBox p = new PictureBox();
p.Click += new System.EventHandler(P_Click(sender,
new MyEventArgs { design = reader1["desig_prd"].ToString(), prix = (float)reader1["prix_prd"] }));
p.ImageLocation = reader1["image"].ToString();
p.Height = 100;
p.Width = 160;
p.Location = new System.Drawing.Point(4+ repetition * 150, (int)(rep/4)*130+4);
panel1.Controls.Add(p);
repetition++;
rep++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
点击图片框下方我希望传递2个参数(价格:reader1 ["prix_prd"]和产品名称:reader1 ["desig_prd"]),不要忘记它们处于循环中!我知道
p.Click += new System.EventHandler(P_Click(sender,
new MyEventArgs { design = reader1["desig_prd"].ToString(), prix = (float)reader1["prix_prd"] }));
Run Code Online (Sandbox Code Playgroud)
触发错误"事件名称预期"但如何在循环中将参数传递给事件?提前致谢
您不能将自定义参数传递给Click事件处理程序,因为您不是引发事件的人...
但是,您可以使用匿名方法或lambda表达式来指定捕获必要数据的处理程序:
var design = reader1["desig_prd"].ToString();
var prix = (float)reader1["prix_prd"];
p.Click += (sender1, e1) => SomeMethod(design, prix);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |