PDA

View Full Version : minimized&maximized



mina1363
شنبه 27 مرداد 1386, 15:10 عصر
دو تا فرم درام که یکی از داخل دیگری باز میشه میخوام وقتی فرم دوم خواست باز بشه فرم مادر minimized بشه و هر گاه فرم دوم بسته شد فرم مادر maximized بشه باید چیکار کنم ؟:قلب::خجالت:

PC2st
شنبه 27 مرداد 1386, 19:04 عصر
دقیقا نفهمیدم منظورتون از فرم مادر چی بود، بهرحال اگر میخواهید با باز شدن فرم دوم، فرم اول minimum بشه و با بسته شدن فرم دوم، فرم اول maximum بشه، کدهای زیر را به فرم دوم اضافه کنید:


Form previousForm;

public void Show(Form caller)
{
this.previousForm = caller;
this.Show();
caller.WindowState = FormWindowState.Minimized;
}

protected override void OnClosed(EventArgs e)
{
if (this.previousForm != null)
this.previousForm.WindowState = FormWindowState.Maximized;
base.OnClosed(e);
}

با فرض اینکه فرم دوم به نام Form2 باشه، هر وقت خواستید که فرم دوم به نمایش در بیآید، کدهای زیر را در فرم اول بنویسید:


Form2 secondForm = new Form2();
secondForm.Show(this);

همانطور که میبینید، تغییرات زیادی در فرم اول ایجاد نشده، فقط باید از متد Show استفاده کنید که پارامتر آن، شیئی از فرم اول خواهد بود.

mina1363
یک شنبه 28 مرداد 1386, 09:05 صبح
مرسی مرسی مرسی یک دنیا تشکر

mina1363
یک شنبه 28 مرداد 1386, 10:09 صبح
this.Show();
اجرا نشد و error زیر را میدهد:
میگه Error 1 No overload for method 'show' takes '0'

emad_67
یک شنبه 28 مرداد 1386, 10:21 صبح
شما باید متد show ایی که مربوط به نشون دادن فرم هست رو انتخاب کنید . الان که این ارور رو داده , شما اومدی متدی رو که تو برنامه توسط خودتون تعریف شده فرخوانی کردیدی . تو لیستی که از متد ها باز میشه نگاه کنید , دوتا تابع show داره
یه سوال هم از جناب PC2st.ir داشتم که چرا در آخر تابع دوم این متد رو فراخوانی کردن


base.OnClosed(e);

من بدون این هم امتحان کردن جواب داد.

PC2st
یک شنبه 28 مرداد 1386, 11:12 صبح
من بدون این هم امتحان کردن جواب داد.
محض اطمینان این کار رو انجام دادم تا اگر کلاس والد کار بخصوصی میخواست انجام بده، اون کارها هم انجام بشه. حالا ممکنه نیازی به اینکار هم نباشه.
چون من از نحوه پیاده سازی متد Close از کلاس پدر، آشنائی ندارم (بدلیل Encapsulation)، پس بهتره که اجازه بدم کاری که لازم داره رو انجام بده.





this.Show();
اجرا نشد و error زیر را میدهد:
میگه Error 1 No overload for method 'show' takes '0'



قاعدتا نباید ارور بده، شاید حالت استثنائی باشه که متوجهش نشدم، این متد رو کجا و چطور صدا زدید؟

mina1363
یک شنبه 28 مرداد 1386, 12:56 عصر
ممنون همانطور که emad_67 گقتند من نباید از متد show که خودم ایجاد کرده بدم استفاده میکردم و ارور به خاطر همین بود