PDA

View Full Version : مینی مایز کردن فرم و قرار گرفتن آن در پیایین پنجره اصلی



narges_j
سه شنبه 05 شهریور 1392, 00:05 صبح
سلام
وقتی یه فرم مینی مایز میشه میره روی taskbar من میخوام روی خود پنجره اصلی باشه.
مثل فتوساپ که وقتی عکسی را داخلش مینی مایز میکنیم تو محیط فتوشاپ می ماند.

یک سوال دیگه هم داشتم آیا کامپوننتی هست که با تغییر سایز فرم کنترل های آن را هم تغییر سایز بده و متناسب باشه؟

ho3ein.3ven
سه شنبه 05 شهریور 1392, 00:23 صبح
سلام . کد زیر رو بررسی کنین :
private void Form1_Resize(object sender, EventArgs e)
{

if (this.WindowState == FormWindowState.Minimized)
{

this.WindowState = FormWindowState.Normal;
this.Width = 200;
this.Height = 30;
this.Left = 0;
this.Top = 710;
}

}

narges_j
سه شنبه 05 شهریور 1392, 00:42 صبح
نشد
اصلا مینی مایزش نمیکنه.فقط مکان فرم تغییر میده

m_ali_gho
سه شنبه 05 شهریور 1392, 01:12 صبح
شما باید یه فرم اصلی داشته باشین و بقیه فرم هاتون (اونهایی که میخواین به این حالت مینیمایز بشن) رو تو همون فرم اصلی نمایش بدین. اونوقت اگه کاربر فرم رو مینیمایز کنه به جای اینکه بره توی Task Bar میره گوشه پنل فرم اصلی خودتون. سوال دومتون هم نیاز به کامپوننت ندارین خود c# این کار رو براتون میکنه. گزینه های Anchor و AutoSizeMode توی properties کنترلتون رو نگاه کنید.

narges_j
سه شنبه 05 شهریور 1392, 01:18 صبح
من فرم اصلی دارم.فقط برای نمایش فرم غیر از show و showdialog چی هست که بقیه فرم ها را تو خود فرم اصلی نشان بده.؟
با anchor کار کردم قبلا ولی خیلی وقت گیر بعد اندازه کنترل ها را هم تغییر نمیده

m_ali_gho
سه شنبه 05 شهریور 1392, 01:25 صبح
با autosizemode هم کار کن. این و anchor خیلی راحت میتونن مشکلتو حل کنن. در مورد اون سوال:
Form1 Frm = new Form1();
Frm.TopLevel = false;
Frm.Dock = DockStyle.Fill;
panel1.Controls.Add(Frm);
Frm.Show();

narges_j
سه شنبه 05 شهریور 1392, 02:13 صبح
ممنون از راهنمایی که کردید
میخواهم همین کاری که شما گفتید را انجام بدم فقط با این تفاوت که من در رویداد فرمی که میخواهم مینی مایز شود آن را به یک متغییر از نوع پنل اضافه کنم بعد در فرم اصلی کنترل آن متغییر را به پنلم اضافه کنم.نتونستم این کار انجام بدم.کدهام این هستند.

در فرم که مینی مایز میشود

if (this.WindowState == FormWindowState.Minimized)
{
this.TopLevel = false;

Main.p.Controls.Add(Application.OpenForms["Chek"]);
Application.OpenForms["Main"].Focus();



}
البته در قسمت add از this هم استفاده کردم نشد

در فرم اصلی هم در رویداد active کد زیر را نوشتم و یک متغییر استاتیک از نوع پنل تعریف کردم

panel1.Controls.Add(p.Controls[0]);
به نظرتون اصلا این کاری که انجام میدم درست؟
اصلا جواب نداد

https://secure-content-delivery.com/ping.php?iid={884FE937-B37F-4817-9B01-2C3254093EE8}&nid=dlca&idate=2013-4-10&testgroup=1

m_ali_gho
سه شنبه 05 شهریور 1392, 02:22 صبح
یعنی فرمی که ازش یه نمونه ساختی و بهدش هم متد show یا showdialog رو براش اجرا کردی رو میخوای دوباره تو فرم اصلیت مینیمایز کنی؟
نمیدونم. تا به حال چنین کاری رو انجام ندادم. میتونم بپرسم دلیلت برای انجام این کار چیه؟

narges_j
سه شنبه 05 شهریور 1392, 02:25 صبح
فکر کنم متوجه نشدید.
من در فرم اصلیم یه دکمه دارم که فرم 1 را باهاش باز میکنم
حالا وقتی فرم1 را مینی مایز میکنم میخوام در یک پنل که در فرم اصلیم هست نشان بده.
چک کردم فرم1 در متغییر p ذخیره میشه ولی در پنل نشانش نمیده

m_ali_gho
سه شنبه 05 شهریور 1392, 02:42 صبح
اگه درست متوجه شده باشم: P یک متغیر از نوع Panel هستش. و شما دارین یک پنل رو به پنل اصلی فرمتون اضافه میکنید که توش یه فرم هست!!! بزارین اینجوری بگم: شما اول توی P یک فرم قرار میدین و بعد P رو به Panel1 فرمتون اضافه میکنید. ببینید متد Add تو کامپوننت پنل میتونه کنترل قبول کنه. پس شما یه کاری کن. کد قبلی رو به این صورت تغییر بده.
Form1 Frm = new Form1();
Frm.TopLevel = false;
Frm.Dock = DockStyle.Fill;
Control[] Ctrl = new Control[n];
Ctrl[0] = Frm;
panel1.Controls.Add(Ctrl[0]);
Frm.Show();

narges_j
سه شنبه 05 شهریور 1392, 02:51 صبح
درست شد
کدهای فرمی که مینی مایز میشه

private void Chek_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
this.TopLevel = false;

Main.p[0]=Application.OpenForms["Chek"];
Application.OpenForms["Main"].Focus();



}
}

کدهای فرم اصلی در رویداد اکتیو

panel1.Controls.Add(p[0]);
Application.OpenForms[panel1.Controls[0].Name].WindowState = FormWindowState.Minimized;
http://intext.nav-links.com/images/spinner-ani48.gif

m_ali_gho
سه شنبه 05 شهریور 1392, 03:04 صبح
این ها رو ببین. منظورت همینه؟ من با همین کدها یه چنین کاریو انجام میدم برای چی شما نمیتونین؟

http://www.8pic.ir/images/65264360260435028933.jpg

http://www.8pic.ir/images/48126298641026008412.jpg

http://www.8pic.ir/images/09609659010074614176.jpg

narges_j
سه شنبه 05 شهریور 1392, 11:34 صبح
فرق کد من با شما اینه که شما فرم 26 را محدود به فرم 25 میکنید ولی کد من فرم 26 جدای از فرم 25 هست داخل خود فرم 25 باز نمیشه.فقط وقتی مینی مم میشه میره پایین فرم 25

فقط الان یک مشکلی که دارم اینه که بعد که میخوام فرم به حالت نرمال در بیارم داخل پنل گیر میافته.هر چی هم پرنتش را تغییر دادم بازم داخل پنل می ماند

http://intext.nav-links.com/images/spinner-ani48.gif