PDA

View Full Version : راهنمایی - مقدار برای button click



ramin.norouzi65
شنبه 07 دی 1398, 13:38 عصر
با سلام خدمت دوستان
بنده میخوام تعدادی دکمه به صورت داینامیک از محتویات یه تیبل درست کنم. مشکلم مقداری هست که باید به رویداد کلیک هر دکمه بدم:

private void Form1_Load(object sender, EventArgs e)
{
L2sqlDataContext dbconn = new L2sqlDataContext();
var query1 = from c in dbconn.tbl_LINKs where c.active == 1 orderby c.sortnum ascending select c;
var result = query1.ToList();


for (int I=0; I<= result.Count -1; I++)
{
Button btn = new Button();
btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Click += ...............?
flowLayoutPanel1.Controls.Add(btn);
}


}

میخوام رویداد کلیک، مقدار value از همون ردیف تیبل رو بگیره( یه آدرس وب سایت در جدول برای مقدار Value قرار داده شده است.) result[I] رو چطوری بیارم به کلیک؟
ممنون میشم راهنمایی بفرمایید
با تشکر

the king
شنبه 07 دی 1398, 15:56 عصر
با سلام خدمت دوستان
بنده میخوام تعدادی دکمه به صورت داینامیک از محتویات یه تیبل درست کنم. مشکلم مقداری هست که باید به رویداد کلیک هر دکمه بدم:

private void Form1_Load(object sender, EventArgs e)
{
L2sqlDataContext dbconn = new L2sqlDataContext();
var query1 = from c in dbconn.tbl_LINKs where c.active == 1 orderby c.sortnum ascending select c;
var result = query1.ToList();


for (int I=0; I<= result.Count -1; I++)
{
Button btn = new Button();
btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Click += ...............?
flowLayoutPanel1.Controls.Add(btn);
}


}

میخوام رویداد کلیک، مقدار value از همون ردیف تیبل رو بگیره( یه آدرس وب سایت در جدول برای مقدار Value قرار داده شده است.) result[I] رو چطوری بیارم به کلیک؟
ممنون میشم راهنمایی بفرمایید
با تشکر


Button btn = new Button();
btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Tag = result[I].value;
btn.Click += btn_Click;


private void btn_Click(object sender, EventArgs e)
{
var value = ((Button) sender).Tag.ToString();

}

ramin.norouzi65
شنبه 07 دی 1398, 21:49 عصر
فقط میتونم بگم دمت گرم... بهتر از این نمیشد



Button btn = new Button();
btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Tag = result[I].value;
btn.Click += btn_Click;


private void btn_Click(object sender, EventArgs e)
{
var value = ((Button) sender).Tag.ToString();

}

ASHKANLAEI
یک شنبه 08 دی 1398, 17:39 عصر
البته برای کد های کوتاه از lambda هم میتونین استفاده کنین:
Button btn = new Button();btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Click += (s, e) => {var value = result[i].ToString();};
}

ramin.norouzi65
دوشنبه 09 دی 1398, 08:40 صبح
ممنون از راهنمایی شما

البته برای کد های کوتاه از lambda هم میتونین استفاده کنین:
Button btn = new Button();btn.AutoSize = true;
btn.Name = "btn_" + I;
btn.Text = result[I].title.ToString();
btn.Click += (s, e) => {var value = result[i].ToString();};
}