PDA

View Full Version : سوال: قرار گرفتن شی های فرم پدر روی فرم فرزند؟



samadblaj
یک شنبه 28 آبان 1391, 13:18 عصر
سلام دوستان لطفا عکس زیر رو نگاه کنید و نمیدونم چرا این مشکل به وجود اومده...

لینک های زیرهم یه سری کد گذاشتن که کد های لینک اول بهینه ومناسب بود اما یه خطا داشت؟ :متفکر:

لینک اول (http://stackoverflow.com/questions/4808109/controls-in-container-form-come-over-child-form)، دوم (http://barnamenevis.org/showthread.php?351569-%D9%86%D8%AD%D9%88%D9%87-%DA%A9%D8%A7%D8%B1-%D8%A8%D8%A7-%D9%81%D8%B1%D9%85-%D9%87%D8%A7%DB%8C-MDI&p=1554614&highlight=%D9%81%D8%B1%D9%85+%D9%BE%D8%AF%D8%B1#po st1554614)

maythammsp2000
یک شنبه 28 آبان 1391, 13:21 عصر
خاصيت top Most فرم فرزند رو true كنيد شايد درست بشه

samadblaj
یک شنبه 28 آبان 1391, 13:25 عصر
خاصيت top Most فرم فرزند رو true كنيد شايد درست بشه

نه دوست من این کارو کرده بودم اما درست نشد...

maythammsp2000
یک شنبه 28 آبان 1391, 13:54 عصر
دكمه هاي سمت راست رو تو يه grop box انتقال بده.خاصيت dock رو به سمت راست ست كن.بعد خاصيت dock فرم فرزند رو هم وسط ست كن.ببين درست ميشه

samadblaj
یک شنبه 28 آبان 1391, 14:03 عصر
دكمه هاي سمت راست رو تو يه grop box انتقال بده.خاصيت dock رو به سمت راست ست كن.بعد خاصيت dock فرم فرزند رو هم وسط ست كن.ببين درست ميشه

ببخشید یعنی منظور شما اینه که طوری طراحی کنم که دکمه ها روی فرم نیفته؟؟؟
ببینید فرم پدر من :لبخند: یک فرم کلی هست و پر از ابزار میشه ! و به هر شکل که تنظیم کنم باز هم فرم فرزند میفته روش...

samadblaj
یک شنبه 28 آبان 1391, 20:23 عصر
کسی نمیتونه کمکم کنه؟؟؟

samadblaj
دوشنبه 29 آبان 1391, 17:06 عصر
لطفا یکی کمکم کنه ببینید توی این فروم (http://stackoverflow.com/questions/4808109/controls-in-container-form-come-over-child-form)این کد رو برای پاسخ یکی از دوستان زده بودن اما من نتونستم ازش استفاده کنم ؟؟؟


توضیحات :


It appears as though that form is a sibling of those other child controls. Do you have to open it as a child of that window? Can't it be like a non-modal dialog box and not a child window of that main form?

If it has to be within that main form and a sibling of those controls, then you're going to have to set the Z-Order of it. There's no property for that, so you're going to have to look toward the Win32 API call, SetWindowPos:

[DllImport("user32.dll", EntryPoint = "SetWindowPos")]
public static extern bool SetWindowPos(
int hWnd, // window handle
int hWndInsertAfter, // placement-order handle
int X, // horizontal position
int Y, // vertical position
int cx, // width
int cy, // height
uint uFlags); // window positioning flags


const uint SWP_NOSIZE = 0x1;
const uint SWP_NOMOVE = 0x2;
const uint SWP_SHOWWINDOW = 0x40;
const uint SWP_NOACTIVATE = 0x10;


SetWindowPos((int)form.Handle, // that form
(int)insertAfter.Handle, // some other control
0, 0, 0, 0,
SWP_NOMOVE | SWP_NOSIZE | SWP_SHOWWINDOW | SWP_NOACTIVATE);

ali.bahrami
دوشنبه 29 آبان 1391, 20:23 عصر
دوست خوب من برای نماش فرم فرزند از متد ShowDialog() استفاده کن و top most را هم true کن
امتحان کن نتیجه را خبر بده

Mahmoud.Afrad
دوشنبه 29 آبان 1391, 23:19 عصر
میتونی باتن ها رو روی یک فرم مجزا قرار بدید و به این صورت تنظیمش کنید:
public Form1()
{
InitializeComponent();

Form2 frm2 = new Form2();
frm2.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
frm2.MdiParent = this;
frm2.Dock = DockStyle.Right;
frm2.Show();
}
Form2 در اینجا فرمی هست که باتن هارو روش قرار دادید.

samadblaj
دوشنبه 29 آبان 1391, 23:32 عصر
دوست خوب من برای نماش فرم فرزند از متد ShowDialog() استفاده کن و top most را هم true کن
امتحان کن نتیجه را خبر بده
نه نمیشه والا این دوستمون maythammsp2000 جان هم اشاره کردن ولی با این روش نمیشه....

Mahmoud.Afrad
دوشنبه 29 آبان 1391, 23:35 عصر
نمیشه یا اونی نیست که میخوای؟

samadblaj
دوشنبه 29 آبان 1391, 23:48 عصر
سلام نمیشه خطا میده و مشکل داره...
من فقط میخوام فرم فرزند روی فرم پدر قرار بگیره و شی های فرم پدر روی فرم فرزند قرار نگیره حالا به هر شکل...
یه روش دیگه که هست بعد از نمایش مخفی کردن ابزار فرم هست که منطقی نیست چون یک سری label های فرم پدر همیشه باید باشه.
ممنون میشم کمکم کنید

الان داشتم اینو مینوشتم پستتون رو دیدم ابتکار خیلی خوبیه...
بهتون اطلاع میدم خیلی خیلی ممنونم.

programerinfonet
دوشنبه 29 آبان 1391, 23:49 عصر
دوست عزیز خاصیت transparency key فرم فرزندت رو بررسی کردی ؟

samadblaj
سه شنبه 30 آبان 1391, 00:12 صبح
دوست عزیز خاصیت transparency key فرم فرزندت رو بررسی کردی ؟

لطفا بیشتر توضیح بدید؟




نمیشه یا اونی نیست که میخوای؟
ببخشید ولی این راه بدرد کار من نمیخوره چون با خیلی از مشکلات مواجه میشم

کدی که توی پست های قبل قرار دادم باید درست کار کنه اما نمیدونم چرا اینجاش مشکل داره...
[DllImport("user32.dll", EntryPoint = "SetWindowPos")]

programerinfonet
سه شنبه 30 آبان 1391, 00:20 صبح
فرم فرزندت یک خاصیت داره به نام transparency key که یک خاصیت color داره که اگه با رنگ back color یک باشه فرمت بدین شکل میشه
در اصل نباید با هم یکی باشن

samadblaj
سه شنبه 30 آبان 1391, 00:37 صبح
فرم فرزندت یک خاصیت داره به نام transparency key که یک خاصیت color داره که اگه با رنگ back color یک باشه فرمت بدین شکل میشه
در اصل نباید با هم یکی باشن
من این کار رو کردم اصلا تاثیر نداشت.
فکر کنم شما اصلا سوال منو متوجه نشدید... ببینید اون فرمی که دکمه ها روشه فرم پدر MDIParent هستش وقتی که یک فرم فرزند win form ساده رو روش باز میکنم به این مشکل بر میخورم...

programerinfonet
سه شنبه 30 آبان 1391, 00:41 صبح
منم دقیقأ منظورم همین بود دوست عزیز
شما الان فرمت نیست اما کنترلاش هست که تا اونجا که من می دونم تنها ایرادش همینه که این دو خاصیت باهم یکی باشن

samadblaj
سه شنبه 30 آبان 1391, 00:57 صبح
ببینید یه مثال براتون گذاشتم لطفا اگه زحمتی نیست یه تست کنید و اطلاع بدید...

Mahmoud.Afrad
سه شنبه 30 آبان 1391, 03:43 صبح
من منظورم این بود که دکمه ها رو روی یکی از فرمهای فرزند قرار بدی. پروژه زیر :
http://uploadfa.net/uploads/13533685221.rar

nilmil_nil
سه شنبه 30 آبان 1391, 11:01 صبح
به نظر من راه حل mafaman2003 (http://barnamenevis.org/member.php?71297-mafaman2003) دوست خوبمون راه حل خوبیه منم تو برنامه هام از این روش استفاده میکنم

samadblaj
سه شنبه 30 آبان 1391, 12:55 عصر
من منظورم این بود که دکمه ها رو روی یکی از فرمهای فرزند قرار بدی. پروژه زیر :
http://uploadfa.net/uploads/13533685221.rar


به نظر من راه حل mafaman2003 دوست خوبمون راه حل خوبیه منم تو برنامه هام از این روش استفاده میکنم

سلام ممنونم از هر دو دوست عزیز ولی این روش کار منو حل نمیکنه من باید از کل فرم MDI استفاده کنم یعنی یک منو تو ذهنم هست که باید کل فرم رو بگیره و همینطور یهسری اطلاعات به صورت LABEL رو فرم باید نمایش داده بشه ...

nilmil_nil
سه شنبه 30 آبان 1391, 13:26 عصر
میتونید اون فرم دوم رو که دوستمون گفت Maximize کنید و عملیات و هر اطلاعاتی که میخواید نشون بدین رو روی همین فرم نشون بدین نه فرم پدر !!!

samadblaj
سه شنبه 30 آبان 1391, 15:48 عصر
میتونید اون فرم دوم رو که دوستمون گفت Maximize کنید و عملیات و هر اطلاعاتی که میخواید نشون بدین رو روی همین فرم نشون بدین نه فرم پدر !!!
maximiza نمیشه میشه مثالی رو که فرستادم برام ویرایش کنید...

Mahmoud.Afrad
سه شنبه 30 آبان 1391, 18:32 عصر
maximize نکن چون همه فرم ها اینطوری میشن.

توی مثالی که من گذاشتم فرمی که باتن ها ولیبل ها رو روش میزاری خاصیت dock رو روی fill تنظیم کن. منظورم frmTools هست که توی فرم والد ساخته میشه.
public frmMDIParent()
{
InitializeComponent();

frmTools frm = new frmTools();
frm.MdiParent = this;
frm.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
frm.Dock = DockStyle.Fill;
frm.Show();
}