PDA

View Full Version : سوال: ساخت کپی از Groupbox و کنترل های داخل آن



مهندس نرم افزار110
جمعه 02 مرداد 1394, 17:53 عصر
من یه groupbox از قبل روی فرمم دارم و داخلش کلی text box و combo و موارد دیگه هست . آیا برای ساخت کپی از کل این مجموعه (منظور groupbox) که تعداد کپی ها رو از کاربر بگیره راهی هست؟
ممنون

دلتنگ اسمان
جمعه 02 مرداد 1394, 18:08 عصر
سلام
بیشتر توضیح بدین. یعنی چی از groupbox کپی کنی اون هم از طریق کاربر. اگه دقیقتر عنوان کنین شاید بشه کمک کرد.

مهندس نرم افزار110
جمعه 02 مرداد 1394, 18:27 عصر
فرض کنید یه لیست مشخصات از اطلاعات اشخاص داریم توی یک groupbox و یک combobox که تعداد سری اطلاعات که قصد ورود داریم مشخص میشود.
من میخام به تعداد وارد شده در combobox از روی groupbox کپی بگیرم و داخل فرم قرار بدم تا اطلاعات اون تعداد از نفرات رو از کاربر بگیرم.(منظور در زمان اجرای برنامه هست.)
تشکر

مهندس نرم افزار110
جمعه 02 مرداد 1394, 18:36 عصر
من این کد رو نوشتم ولی اشکال داره

GroupBox grpbox_new = new GroupBox();
grpbox_new.Top = groupBox1.Top + 200;
grpbox_new.Left = groupBox1.Left;
this.Controls.Add(grpbox_new);
foreach (Control ctrl in groupBox1.Controls)
{
grpbox_new.Controls.Add(ctrl);
}
grpbox_new.ResumeLayout(false);
grpbox_new.PerformLayout();

دلتنگ اسمان
جمعه 02 مرداد 1394, 18:42 عصر
هرچند بازهم متوجه منظورتون نشدم.
چیزی که من متوجه شدم :اگه میخوای اطلاعات شخص 1 رو از طریق groupbox بگیری و سپس اطلاعات شخص 2 رو بگیری. خب برای این کار بعد از دریافت اطلاعات شخص1 ، groupbox رو خالی کن تا آماده برای دریافت اطلاعات شخص بعدی بشه. اینطوری به هر تعداد که بخوای میتونی این کار رو انجام بدی.
اطلاعات دریافتی هر فرد رو هم هرجای که میخوای ذخیره کن و یا نمایش بده.
مثل برنامه های ثبت اطلاعات دانشجو که اطلاعات هر دانشجو بعد از دریافت ذخیره میشه و اون فرم خالی میشه و اماده دریافت اطلاعات فرد بعدی میشه.

Mahmoud Zaad
جمعه 02 مرداد 1394, 18:45 عصر
سلام
شما با دیتاگریدویو آشنا هستید؟

مهندس نرم افزار110
جمعه 02 مرداد 1394, 18:51 عصر
من واسه ورود اطلاعات مجبورم اطلاعات قبلی رو هم نشون بدم به کاربر -بدون استفاده از دیتا گرید
و طولانی شدن سطر های ورود هم اشکال ندارد چون نهایتا 10 سطر می باشد.
مجبور به استفاده از این روش هستم وگرنه از دیتا گرید استفاده میکردم.
ممنون

Mahmoud.Afrad
شنبه 03 مرداد 1394, 08:00 صبح
یک usercontrol ایجاد کنید و کنترلهای لازم به همراه متدها و رویدادهای مورد نیاز رو درش قرار بدید. هر جا نیاز داشتی یک نمونه از یوزر کنترل ایجاد کن و به فرم اضافه کن.

مهندس نرم افزار110
یک شنبه 04 مرداد 1394, 18:25 عصر
با تشکر از پیشنهاد استفاده از یوزر کنترل . میشه لطفأ طریقه فراخوانی اونو تو برنامه توضیح بدین؟

مهندس نرم افزار110
پنج شنبه 08 مرداد 1394, 18:27 عصر
دوستان من سوال بالا رو بروش زیر حل کردم. البته کمی اشکال داره موقع حذف کردن آیتم ها (flowpanel)

public List<FlowLayoutPanel> flps = new List<FlowLayoutPanel>(); public Form1()
{
InitializeComponent();
}


private void numericUpDown1_ValueChanged(object sender,EventArgs e)
{
if(flps.Count>Convert.ToDecimal(numericUpDown1.Value))
while (flps.Count >=1)
{
this.Controls.RemoveAt(1);
this.flps.RemoveAt(0);
}


for (int i = flps.Count; i < Convert.ToDecimal(numericUpDown1.Value); i++)
{
FlowLayoutPanel flp = new FlowLayoutPanel();
flp.FlowDirection = FlowDirection.RightToLeft;
flp.BackColor = Color.LightBlue;
flp.Size = new Size(400, 25);
flp.Location = new Point(i, 35 * i);
flp.Name = "flowpanel";


TextBox txtbox = new TextBox();
ComboBox combox = new ComboBox();
Button btn = new Button();
btn.Text = "Click this";

flp.Controls.Add(txtbox);
flp.Controls.Add(combox);
flp.Controls.Add(btn);
flps.Add(flp);
}
this.Controls.AddRange(flps.ToArray());}

اگه اشکال شو تونستین حل کنین مختصر توضیحی بنویسین. تشکر