PDA

View Full Version : سوال: ایجاد کنترل ها در فرم در زمان اجرا در C#.net



partovinia
پنج شنبه 10 مهر 1393, 11:16 صبح
برای ایجاد کنترل هایی مثل textbox و یا form باید چه کدی بنویسم ؟؟؟من از رویداد create control اتستفاده می کنم ؛ ولی متاسفانه هیچ کنترلی روی فرم نمی بینم ...لطفا راهنماییم کنید دوستان...

alireza_g698
پنج شنبه 10 مهر 1393, 11:45 صبح
سلام
یدونهflowtlayoutpanel در فرم قرار دهید و سپس کنترل ها را در ان جا اضافه کنید

partovinia
جمعه 11 مهر 1393, 16:03 عصر
سلام من توی کتاب آقای جعفر نژاد قمی خوندم که از رویداد create control استفاده کنم و در این کتاب چیزی از اضافه کردن کنترلها نگفته بود ..یعنی منظور شما اینه که کنترلی رو که می خوام روی flowtlayoutpanel قرار بدم بعد از این رویداد استفتده کنم ؟ راهی وجود داره که بدون اضافه کردن کنترل کدی بنویسم که کنترل در زمان اجرا ایجاد بشه ؟اگه پاسخ بدین ممنون میشم دوست عزیز

meysamsh91
جمعه 11 مهر 1393, 19:05 عصر
سلام
متاسفانه اکثر دوستان برای یادگیری برنامه نویسی رجوع میکنند به کتاب های ایشون و کاملاً کتاب های مرجع رو فراموش می کنند. برای یاد گیری اصولی برنامه نویسی حتما کتب مرجع و اصلی رو داشته باشید.
این سوالی که شما مطرح کردید مربوط میشه به کتاب های 511 و 505 مایکروسافت.

و اما سوال شما :
فرض کنید موقع اجرای فرم می خواهید یک Button و یک TextBox ساخته بشه و زمانیکه بر روی Button مورد نظر کلیک شد متن Hello در TextBox به نمایش در بیاد.
در رویداد form Load از کد زیر استفاده کنید

// Button
Button b = new Button(); // ساخت یک شی
b.Text = "Show"; // متن
b.Location = new Point(20, 20); // محل قرار گیری کنترل
this.Controls.Add(b); // اضافه کردن کنترل ایجاد شده در فرم

// TextBox
TextBox t = new TextBox();
t.Name = "textBox1";
t.Location = new Point(20, 60);
this.Controls.Add(t);



کد بالا کنترل های مورد نظر رو ایجاد میکنه اما شما نمیتونید به هیچ یک از رویداد های کنترل ساخته شده دسترسی داشته باشید. برای این کار شما باید از طریق delegate به رویداد موزد نظر اشاره کنید.


//delegate
b.MouseClick += new MouseEventHandler (b_MouseClick);

}

void b_MouseClick(object sender, MouseEventArgs e)
{
Controls["textBox1"].Text = "hello";
}


و این میشه کل کد شما

private void Form2_Load(object sender, EventArgs e)
{
// Button
Button b = new Button(); // ساخت یک شی
b.Text = "Show"; // متن
b.Location = new Point(20, 20); // محل قرار گیری کنترل
this.Controls.Add(b); // اضافه کردن کنترل ایجاد شده در فرم

// TextBox
TextBox t = new TextBox();
t.Name = "textBox1";
t.Location = new Point(20, 60);
this.Controls.Add(t);

//delegate
b.MouseClick += new MouseEventHandler (b_MouseClick);

}

void b_MouseClick(object sender, MouseEventArgs e)
{
Controls["textBox1"].Text = "hello";
}


موفق و پیروز باشید.

علی صوفیانی
یک شنبه 14 شهریور 1395, 23:09 عصر
اگه بخواهیم کنترلهای ساخته شده در زمان اجرا را ذخیره کنیم و دوباره load کنیم باید چکار کنیم