PDA

View Full Version : سوال: چگونه محل قرارگیری فرم را بر اساس فرم دیگرتنظیم نماییم



dadavaran
چهارشنبه 16 اسفند 1391, 12:21 عصر
با سلام خدمت دوستان و اساتید محترم

فرض کنید یک فرم اصلی داریم که فرمهای فرعی روی آن باز میشوند
حالا می خوایم فرمهای فرعی دقیقاً در مختصات تعیین شده قراربگیرند...
مثلاً روی فرم اصلی یک کادر یا picture box داریم و حالا فرم فرعی باید دقیقا در مختصات اونا قراربگیره بگونه ای که بنظر برسه فرم درون کادر یا picture box قرارگرفته
ضمناً تغییر رزلوشن یا سایز صفحه، تغییری درموقعیت فرم ایجاد نکنه
انشاالله که متوجه منظورم شده باشید

khokhan
چهارشنبه 16 اسفند 1391, 13:32 عصر
اگه قصد اری فرمها رو آنطوری که دوست داری در محل مشخصی از صفحه نمایش ظاهر شوند

در رویداد لود فرم یا در تعریف کلاس فرم کد زیر رو وارد می کنی ومقدار دهی می کنی


this.Location = new Point(120, 10);

dadavaran
چهارشنبه 16 اسفند 1391, 21:53 عصر
ممنون از راهنمایتون
ولی منظور من این نبود
من میخوام که ابتدا مختصات یک ابزار موجود در فرم اصلی گرفته بشه و بعد فرم2 مطابق با اون مختصات تنظیم بشه
امیدوارم که متوجه منظورم شده باشید

bsflasher
چهارشنبه 16 اسفند 1391, 22:32 عصر
فکر کنم توابع api برای بدست آوردن موقعیت تمامی عناصر ویندوز موجوده میتونی از اونها استفاده کنی

dadavaran
پنج شنبه 17 اسفند 1391, 11:49 صبح
لطفاً به این تصویر توجه کنیید
فرم 2 دقیقاً درون مختصات کادر فرم1 باز شده است
یکی بگه چچوری میشه فرم2 رو مجبور کرد دقیقاً به اندازه اون کادر باز بشه ؟؟؟؟؟

khokhan
پنج شنبه 17 اسفند 1391, 12:02 عصر
با سلام

لطفا این نمونه رو ملاحظه کن

در حالت maximum size هم ملاحظه فرمائید

khokhan
پنج شنبه 17 اسفند 1391, 12:09 عصر
حالا شما می خواهید فرم دوم در درون پانل بزرگ باز بشه یعنی یه چیزی شبیه فرمهای mdi یا همون والد وفرزند ؟ یا نه

dadavaran
پنج شنبه 17 اسفند 1391, 12:16 عصر
ممنون از همکاریتون
درسته میخوام درون اون کادر بزرگ باز بشه

khokhan
پنج شنبه 17 اسفند 1391, 12:38 عصر
حالا
این نمونه رو ببین
همون مثال قبلی با چیزی که شما می خواین

daneshjo90
پنج شنبه 17 اسفند 1391, 14:44 عصر
با سلام

ببین اینن قطعه کد به دردت میخوره ؟


mainRight_panel.Controls.Clear();
mainRight_panel.Visible = true;
Setting_Frm stg = new Setting_Frm();
stg.TopLevel = false;
stg.Dock = DockStyle.Fill;
stg.Show();
mainRight_panel.Controls.Add(stg);



این قطعه کد فرم دوم رو داخل پنلی که در فرم یک وجود داره نشون میده

موفق باشی

dadavaran
پنج شنبه 17 اسفند 1391, 23:12 عصر
ضمن تشکر از استاد khokhan عزیز
کدی که ارائه فرمودید خود خودشه ...
فقط دوتا مشکل دیگه دارم :
1- اگه فرمهای فرعی که قراره روی فرم اصلی باز بشن، بصورت ShowDialog باز بشن موقع اجرا، خطا میده
2- اون فرمها چچوری باید درون کادر ثابت بشن تا کاربر نتونه اونا رو جابجا کنه

khokhan
پنج شنبه 17 اسفند 1391, 23:42 عصر
درود بر شما

عزیز جان حل شد :لبخند:

ارادت داریم

daneshjo90
پنج شنبه 17 اسفند 1391, 23:50 عصر
با سلام
دوست عزیز کد بالا رو که دادم تو دستورات دکمه ای که میخوای در هنگام زدنش فرم مربوط نمایش داده بشه بزار

مثلا :
private void button1_Click(object sender, EventArgs e)
{
mainRight_panel.Controls.Clear();
mainRight_panel.Visible = <b>true</b>;
Setting_Frm stg = <b>new</b> Setting_Frm();
stg.TopLevel = <b>false</b>;
stg.Dock = DockStyle.Fill;
stg.Show();
mainRight_panel.Controls.Add(stg);
}

و همینطور ادامه بده

مشکلت حل میشه

موفق باشی

dadavaran
جمعه 18 اسفند 1391, 00:17 صبح
جناب daneshjo90 عزیز
راستی داخل کدی که زحمت کشیدید این قطعه برای چیه ؟
<b>

daneshjo90
جمعه 18 اسفند 1391, 00:20 صبح
جناب daneshjo90 عزیز
راستی داخل کدی که زحمت کشیدید این قطعه برای چیه ؟
<b>

دوست عزیز میتونستی یه تشکر هم بزنی ولی بازم اشکال نداره

اونا برای بولد(Bold) (توپر) نشون دادن متن استفاده شدن از قطعه کد نیستن

میتونی حذفشون کنی

موفق باشی