PDA

View Full Version : سوال: مشخص کردن کادری برای باز شدن فرم ها در فرم Main



sadaf_
سه شنبه 08 آذر 1390, 20:02 عصر
با سلام
من می خوام panel ی در frmMain ایحاد کنم و به صورت مستطیلی شکل باشه و کاربر هر فرمی رو باز اون فرم دقیقا داخل این Panel به صورت Dock باز بشه
این کار به چه صورتی می شه انحام داد ؟
و بعد از باز شدن فرم آزاد باشه یعنی علاوه بر قرار گرفتن در Panel فرم رو بشه هم تکان داد هم max و min انجام داد
فرم حالت عادی خودش رو حفظ کنه ولی فقط جای باز شدنش در همون Panel باشه
با سپاس فراوان

Hajivandian
سه شنبه 08 آذر 1390, 20:36 عصر
سلام برای این کار فرم های MDI گذینه خوبی هستند، یه مثال ضمیمه کردم

sadaf_
چهارشنبه 09 آذر 1390, 17:12 عصر
از دوستان خواهشمندم بیشتر راهنمایی کنند
ممنون

ya30ien2
چهارشنبه 09 آذر 1390, 18:01 عصر
اگه درست منظورت رو متوجه شده باشم این نمونه رو داخل همین سایت دیدم داخل کدهاش توضیحات مربوطه هم داده78562

sadaf_
شنبه 19 آذر 1390, 13:57 عصر
از دوستان خواهشمندم کمکم کنند
با سپاس

zarrinnegar
شنبه 19 آذر 1390, 14:02 عصر
اگه دنبال راه دیگه ای غیر از mdi میگردی نمیشه
باید کلک بزنی
usercontrol درست کنی اون جوری که میخوای مثل یه فرم
بعد اونو تو panel لود کنی بعدش رو دکمه هاش کد بنویسی که max , min روی اون کار کنه یعنی dock اون usercontrol رو عوض کنه و از این کارها

sadaf_
شنبه 19 آذر 1390, 14:09 عصر
فرم Mainی رو در نظر بگیرید که بالای اون هم منوها وجود داره و یک فضای خالی بزرگ هم در وسط فرم هست
حالا من می خوام در وسط این فرم یک panel بگذارم و هر فرم فرزندی که کاربر باز می کنه رو در این panel به صورت Dock در بیارم و از اون به کاربر اختیارات فرم معمولی رو داره اما فقط می خوام فرم فرزند در زمان لود شدن در همون panel قرار بگیره همین
ممنون

Hajivandian
شنبه 19 آذر 1390, 16:57 عصر
این رو من پیدا کردم، خودم تست نکردم ولی تست کن ببین میشه
http://www.databaseforum.info/2/929147.aspx

reza_mostafavi63
شنبه 19 آذر 1390, 17:38 عصر
به سادگي ميشه اين كار رو كرد :



private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.TopLevel = false;
panel1.Controls.Add(f);
f.Show();
}

sadaf_
دوشنبه 28 آذر 1390, 09:41 صبح
به سادگي ميشه اين كار رو كرد :



private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.TopLevel = false;
panel1.Controls.Add(f);
f.Show();
}


این دقیقا همون چیزی بود که دنبالش بودم
این روش عالیه

sadaf_
دوشنبه 28 آذر 1390, 12:00 عصر
private void button1_Click(object sender, EventArgs e)
{
Form2 f = new Form2();
f.TopLevel = false;
panel1.Controls.Add(f);
f.Show();
}


دوستان این روش رو استفاده کنند و نظرات خودشون رو بدهند
وقتی فرم رو minimize می کنیم فرم در کنار panel قرار می گیره اگر بخواهیم از این حالت خارج کنیم باید چکار کنیم؟

reza_mostafavi63
دوشنبه 28 آذر 1390, 12:52 عصر
از كد زير استفاده كن :

//
private void Form2_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
Hide();
}

فقط بايد مثل ويندوز يه هندلي براي باز گرداندن پنجره به حالت قبلي ايجاد كني .... يه چيزي شبيه TaskBar ويندوز . ميتوني از يك menuStrip كه Dock اون Buttom هست استفاده كني ..

واضحه كه ..تو رويداد كليك اون هندل يه همچين چيزي بايد نوشته بشه :


//
Sender.WindowState = FormWindowState.Normal;
Sender.Show();

sadaf_
دوشنبه 28 آذر 1390, 13:03 عصر
چطوری می شه کاری کرد که فقط panel یه جایی باشه برای لود فرم
در اینجا ما داریم فرم رو به panel add می کنیم
یعنی از panel فقط جهت یک کادر ازش استفاده کنیم
ممنون

reza_mostafavi63
دوشنبه 28 آذر 1390, 13:10 عصر
که فقط panel یه جایی باشه برای لود فرم منظورتو متوجه نشدم . لطفا بيشتر توضيح بده
ما از panel به عنوان كادر استفاده نكرديم شما ميتوني مثل يك panel عادي .. هر كاري ميخواي باهاش انجام بدي .

sadaf_
دوشنبه 28 آذر 1390, 13:15 عصر
یعنی panel صرفا جهت یک کادر باشه برای تعیین جایگاه فرمی که باز می کنیم
چون وقتی فرم رو به panel add میکنیم فرم تحت کنترل panel در میاد و فرم از حالت طبیعی خودش خارج می شه

reza_mostafavi63
دوشنبه 28 آذر 1390, 13:22 عصر
فكر كنم منظور شما اندازه فرمي هست كه داخل پنل باز ميشه ؟؟؟!!!! اگه اين باشه كه خوب طبيعي هستش ... چون اسكرين اين فرم همون panel هستش . اگه اندازه پنل رو بزرگ كنين .. اندازه اسكرين فرم هم بزرگ ميشه .

sadaf_
دوشنبه 28 آذر 1390, 13:27 عصر
منظورم اینه که فرم فقط در یک محیط panel باز بشه همین
دقیقا همون کاری که فرم رو به panel add می کنیم
اما panel فرم رو به خودش add می کنه
آیا غیر از روش روش دیگه ای هست؟

reza_mostafavi63
دوشنبه 28 آذر 1390, 13:55 عصر
نه ديگه غير اين چه راهي ميتونه باشه ... شما اگه ميخواي فرم2 داخل panel باشه كه از همون كد قبلي استفاده كن ولي اگه ميخواي داخل پنل نباشه ولي داخل فرم باشه.. اونوقت پنل رو حذف كن و از اين استفاده كن :



//
Form2 f = new Form2();
f.TopLevel = false;

this.Controls.Add(f);

f.Show();