PDA

View Full Version : حرفه ای: ثبت نام فرمهاي باز در ليست باكس



patrick5053
چهارشنبه 08 آذر 1391, 12:50 عصر
سلام وقت همگي بخير،
من يه فرم والد دارم كه يك ليست باكس داره و در داخل اين فرم والد، يك فرم فرزند با چندتا كليد يا (باتون) دارم كه هر كدوم يك فرم فرزند رو باز ميكنه، حالا من ميخوام نام فرم فرزندي كه داخل فرم والد باز ميشه رو توي ليست باكسي كه داخل فرم والد هست، ثبت كنم، و زماني كه اون فرم فرزند بسته ميشه باز دوباره نام همون فرم از ليست باكسي كه داخل فرم والد هست حذف بشه، يعني من ميخوام همزمان نام تمامي فرمهاي باز رو در يك ليست باكس در ديد كاربر بزارم كه بدونه كدوم فرم بازه و كدوم بسته، اين تا اينجا.
سوال بعدي اينكه حالا چطور با كليك كردن روي نام فرم در ليست باكس همون فرم نمايش داده بشه مثل رافع 7.

patrick5053
چهارشنبه 08 آذر 1391, 13:07 عصر
فقط نميدونم چطوري نام فرم رو بفرستم به فرم والد وگرنه بقيش رو بلدم

patrick5053
چهارشنبه 08 آذر 1391, 13:13 عصر
كسي ميتونه راهنمايي كنه؟

plus
چهارشنبه 08 آذر 1391, 13:13 عصر
نیازی نیست نام فرم رو بفرستی، شما از توی فرم والد به لیست فرم های فرزند دسترسی داری.فکر میکنم با استفاده از مجموعه Controls در فرم والد.در ضمن هر فرم فرزندی که باز میشه رویداد MdiChildActivate (یا چیزی شبیه این) در فرم والد Raise میشه.

patrick5053
چهارشنبه 08 آذر 1391, 13:16 عصر
آراه اين MdiChildActivate رو ديدم، لطف ميكني در مورد طريقه كاريش يه توضيح بدي و اينكه اين كار مشكل رو حل ميكنه؟

plus
چهارشنبه 08 آذر 1391, 13:19 عصر
این رویداد وقتی Raise میشه که یکی از فرم های فرزند فعال بشه. در مورد کاری هم که میخوای بکنی الان باید برم اگه تا عصر دوستان جواب ندادن عصر میام جواب میدم.

patrick5053
چهارشنبه 08 آذر 1391, 13:25 عصر
ممنون پس عصر ميبينمت دوست عزيز

patrick5053
پنج شنبه 09 آذر 1391, 11:53 صبح
سلام خواهشا کمک کنید واجبه.

plus
پنج شنبه 09 آذر 1391, 15:15 عصر
اگه همه فرم ها فقط از یکجا (یک فرم فرزند) باز میشن.یک لیست باکس توی فرم بگذار و :



private void button1_Click(object sender, EventArgs e)
{
Form1 childForm = new Form1();

listBox1.Items.Add(new ChildFormItem(childForm));
childForm.Activated += new EventHandler(childForm_Activated);
childForm.Show();
}

private void childForm_Activated(object sender, EventArgs e)
{
foreach (var item in listBox1.Items)
if (((ChildFormItem)item).ChildForm == sender)
{
listBox1.SelectedItem = item;
break;
}
}

private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
((ChildFormItem)listBox1.SelectedItem).ChildForm.A ctivate();
}

class ChildFormItem
{
Form childForm;
public ChildFormItem(Form ChildForm)
{
this.childForm = ChildForm;
}
public Form ChildForm
{
get { return childForm; }
}
public override string ToString()
{
return childForm.Text;
}
}

اینجا فقط 1 دکمه و یک فرم فرزند به اسم Form1 در نظر گرفته شده، شما باید برای همه دکمه ها این کارو انجام بدی.

patrick5053
دوشنبه 13 آذر 1391, 15:26 عصر
ممنون از راهنمايي دوستم آقاي پلاس.
ميخوام ببينم كسي از دوستان راه بهتري سراغ نداره؟