PDA

View Full Version : سوال: اضافه کردن کنترل در زمان اجرا



sepehr_sepehr
دوشنبه 19 مرداد 1388, 11:46 صبح
سلام
چطور میشه textbox و label رو به تعداد دلخواه در زمان اجرا به فرم اضافه کرد به گونه ای که قابل حرکت دادن باشن؟؟؟؟

Soroush.Sarabi
دوشنبه 19 مرداد 1388, 12:39 عصر
دوست عزیز شما می تونید در زمان اجرا یک instance از کنترل رو بسازید و سپس به مجموعه Contrls اضافه کنید.



Label MyLabel = new Label();
MyLabel.Text = "Salam";
this.Controls.Add(MyLabel);

oldboy
دوشنبه 19 مرداد 1388, 12:44 عصر
سلام دوست عزیز.
هر جا خواستی یه کنترل اضافه کنی، مثلا TextBox، بنویس:

TextBox t1 = new TextBox();
t1.Location = new Point(4, 44);
this.Controls.Add(t1);


هر جا خواستی جاشو عوض کنی، خاصیت Location رو تغییر بده.
Lable هم مثل همینه.

Sociant
دوشنبه 19 مرداد 1388, 15:47 عصر
من یه فرم داشتم که تعداد فیلداش متغیر بود و کاربر میتونست بسته به نیازش تعداد فیلدها رو کم یا زیاد کنه.بسته به این عملش سایز فرمم کم و زیاد میشد و فیلدها زیر هم اضافه میشدن
اگه میخواین اینجوری باشه من این کارارو کردم:
1- یه UserControl ساختم و داخلش Label و TextBox رو گذاشتم
2- خاصیت AutoSize فرم رو True کردم
3- خاصیت AutoSizeMode فرم رو GrowAndShrink قرار دادم
4-یه FlowLayoutPanel به فرمم و اسه نمایش فیلد ها اضافه کردم
5-خاصیت AutoSize و AutoSizeMode رو مثل فرمم مقدار دادم
6-خاصیت FlowDirection رو TopDown قرار دادم
7- دوتا Button یکی واسه اضافه کردن و یکی هم واسه حذف کردن ایجاد کردم
8- تو رویداد Click دکمه افزودن از UserControl که ساخته بودم شی ساختم و به وسیله متد flowLayoutPanel.Controls.Add به کنترلهای پنل اضافه میکردم
9-تو رویداد Click دکمه حذف، آخرین UserControl اضافه شده به پنل رو بوسیله متد flowLayoutPanel.Controls.RemoveAt(flowLayoutPanel. Controls.Count-1) حذف میکردم

sepehr_sepehr
سه شنبه 20 مرداد 1388, 08:42 صبح
ممنون ولی کد اضافه کردن به این شکل رو میدونم. من می خوام اینجوری باشه که در زمان اجرا بشه textboxو... رو حرکت داد ومکانش رو مشخص کرد...

sepehr_sepehr
سه شنبه 20 مرداد 1388, 08:45 صبح
منظور شما از usercontrol یک کلاس به این اسمه؟؟؟

Sociant
سه شنبه 20 مرداد 1388, 15:39 عصر
واسه جابجا کردن از خاصیت Location استفاده میشه. با کد نویسی و در زمان طراحی که آسونه و نکته ای نداره ولی واسه جابجا کردنش با موس راهی که به ذهنم میرسه اینه که با رویداد های MouseDown و MouseMove و MouseUp اینکار رو میتونی بسادگی انجام بدی.

UserControl یکی از کامپوننت های .Net ، که واسه شخصی سازی کنترل ها میتونی ازش استفاده کنی
راه افزودنش به پروژه هم : کلیک راست روی نام پروژه در Solution Explore و انتخاب Add -> UserControl هست

Atena_k
سه شنبه 20 مرداد 1388, 19:30 عصر
سلام
دررابطه با حرکت دادن کنترل ها در runtime زمانی که سر کلاس های استاد کیانی (http://www.barnamenevis.org/forum/member.php?u=47458)بودم ایشان کامپوننتی نوشتن که زمانی که به فرم اضافه می شد یک خاصیت از نوع bool به تمامی کنترل های روی فرم اضافه می شد که با true کردن آن، کنترل مورد نظر قابلیت جابجایی در runtime پیدا می کرد و با false کردن آن قابلیت مذکور از ان گرفته می شد.
اگر دوستان نیاز به این کامپوننت دارند می توانم با آقای کیانی (http://www.barnamenevis.org/forum/member.php?u=47458)صحبت کنم و اگر ایشان اجازه دادند کامپوننت یا نمونه سورس های آن را آپلود می کنم.

saed2006
سه شنبه 20 مرداد 1388, 19:37 عصر
دوست عزیز شما با استغاده از خاصیت location کانتینر مربوط به Labet میتونید loacation lable رو با توجه به اون تنظیم کنید یا تغییر بدین

sepehr_sepehr
سه شنبه 20 مرداد 1388, 23:41 عصر
سلام
دررابطه با حرکت دادن کنترل ها در runtime زمانی که سر کلاس های استاد کیانی (http://www.barnamenevis.org/forum/member.php?u=47458)بودم ایشان کامپوننتی نوشتن که زمانی که به فرم اضافه می شد یک خاصیت از نوع bool به تمامی کنترل های روی فرم اضافه می شد که با true کردن آن، کنترل مورد نظر قابلیت جابجایی در runtime پیدا می کرد و با false کردن آن قابلیت مذکور از ان گرفته می شد.
اگر دوستان نیاز به این کامپوننت دارند می توانم با آقای کیانی (http://www.barnamenevis.org/forum/member.php?u=47458)صحبت کنم و اگر ایشان اجازه دادند کامپوننت یا نمونه سورس های آن را آپلود می کنم.

اگه آپلود کنید ممنون میشم...