PDA

View Full Version : نحوه ی اضافه کردن کنترل در زمان اجرا و ایجاد رویداد برای آن



negar.rafie
جمعه 16 آبان 1393, 19:38 عصر
سلام
فرض کنید می خوایم در زمان اجرا یک یک لیبل اضافه کنیم
حالا نام نمونه اون را هم نمیدونیم چی است یعنی در مثال زیر نامش را میدنیم که lbl1 است:

Label lbl1 = new Label();

بعد می خوایم یک رویداد کلیک هم براش اضافه کنیم و داخل رویداد کد بنویسیم

اصلا چنین کاری ممکن است؟به چه شکل؟

دلتنگ اسمان
جمعه 16 آبان 1393, 21:41 عصر
با سلام
با یه حلقه هم میتونی به تعداد دلخواه لیبل درست کنی و event هم براشون تعریف کنی:

private void button1_Click(object sender, EventArgs e)
{
int x = 0, y = 0;

for (int t = 0; t < 10; t++)
{
x += 10;
y += 30;
Label lbl = new Label();
lbl.Location = new Point(x, y);
lbl.Text = "btn" + t.ToString();
lbl.Name = "btn" + t.ToString();
lbl.BackColor = System.Drawing.Color.Red;
lbl.AutoSize = true;
lbl.Click += new EventHandler(lbl_Click);
this.Controls.Add(lbl);
lbl.Visible = true;

}
int tr = 19 % 2;


}

protected void lbl_Click(object sender, EventArgs e)
{
//attempt to cast the sender as a label
Label lbl = sender as Label;

//if the cast was successful (i.e. not null), navigate to the site
if (lbl != null)
MessageBox.Show("ok");
}

danialafshari
جمعه 16 آبان 1393, 21:45 عصر
سلام
فرض کنید می خوایم در زمان اجرا یک یک لیبل اضافه کنیم
حالا نام نمونه اون را هم نمیدونیم چی است یعنی در مثال زیر نامش را میدنیم که lbl1 است:

Label lbl1 = new Label();

بعد می خوایم یک رویداد کلیک هم براش اضافه کنیم و داخل رویداد کد بنویسیم

اصلا چنین کاری ممکن است؟به چه شکل؟

با سلام
هر Object ی که درون برنامه قرار داره در فایل Designer کدنویسی میشه و می تونید با باز کردن اون به کد ساخت اون و Event ش دسترسی پیدا کنید
یک مثال ساده:

private void button1_Click(object sender, EventArgs e)
{
Label label2 = new Label();
label2.Location = new System.Drawing.Point(200, 90 );
label2.Parent = this;
label2.Name = "label2";
label2.Text = "label2";
label2.Size = new System.Drawing.Size(50, 21);
this.Controls.Add(label2);
label2.Click += new System.EventHandler(label2_Click);
}

private void label2_Click(object sender, EventArgs e)
{
MessageBox.Show("Event For Label 2");
}
موفق باشید