PDA

View Full Version : حالت باز شدن فرم ها در حالت های child و parent



bidad
دوشنبه 16 بهمن 1385, 23:20 عصر
وقتی از mdiParent استفاده میشه اگه یکی از فرم های child رو max کنیم تمام فرمهای بعدی هم که روی اون باز میشن بصورت ماکس باز میشن. حالا ما اگه نخوایم اینطور بشه یعنی فرمهای بعدی یه اندازه خاصی داشته باشن کاری از دستمون بر نمیاد. حد اقل من که نتونستنم. یعنی اگه فرم رو فیکس کنیم باز هم ماکسیمم میشه. حالا اگه ماکسیمم سایز براش تعریف کنیم. دیگه ماکس باز نمیشه اما تمام فرمهای پرنتش رو هم که ماکس هستند بصورت عادی در میاره.
ضمنا چون از حالت parent و child استفاده میکنم نیمتوم فرم ها رو بصورت مودال show کنم. showdialog تو این حالت جواب نمیده.
این مشگل حل شدنی هست؟
لطفا اگه جواب امتحان شده ای دارین من رو هم راهنمایی کنید.

bidad
جمعه 27 بهمن 1385, 02:56 صبح
فکر کنم نشه

حامد مصافی
جمعه 27 بهمن 1385, 10:14 صبح
به سادگی!
هر بار که می خوای فرمی باز کنی موقعیتش رو بنا به دلخواه مقدار دهی کن.

bidad
جمعه 27 بهمن 1385, 19:47 عصر
منظورم رو نفهمیدی!

حامد مصافی
شنبه 28 بهمن 1385, 16:20 عصر
چرا دوست عزیز منظورتون رو فهمیدم.
شما وقتی می خواهید یک فرم mdiChild رو نمایش بدید موقعیت و سایز شروع (کمینه, بیشینه یا معمولی) رو بنا به دلخواه تنظیم کنید.

bidad
چهارشنبه 02 اسفند 1385, 13:32 عصر
میگم وقتی یه فرم mdivhild رو که دارای یه mdiParnte مشخصه max کنیم. تمام فرمهای mdichildi که همون mdiParent رو دارن به همون وضع در میان. یا اگه یکیشون ماکس باشه و بخوایم یه mdi Child روی اون به حالت معمولی باز کنیم اون هم حالتش معمولی میشه.
امتحان کن !

saeed_rezaei
چهارشنبه 02 اسفند 1385, 21:42 عصر
سلام
اگه منظورتون رو درست متوجه شدم باشم مشکل شما اینه که تمام فرمهای چیلد شما از یه windows state پیروی می کنند. یعنی یه windows state برای تمام فرمها.
شما باید این windows state رو برای هر فرم ایجاد کنید به نحوی که هر کدوم ازفرمها از فیلد خودشون بهره ببرند.
یه تایمر روی هر کدوم از فرماتون ایجاد کنید سپس کد زیر رو در هر کدوم از فرماتون وارد کنید.
امیدوارم مشکلتون حل شه.


PublicClass Form1

Dim ls As Windows.Forms.FormWindowState
Dim isactive AsBoolean = True

PrivateSub Form1_Activated(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Activated
Me.WindowState = ls
isactive = True
EndSub

PrivateSub Form1_Deactivate(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Deactivate
isactive = False
EndSub

PrivateSub Form1_Layout(ByVal sender AsObject, ByVal e As System.Windows.Forms.LayoutEventArgs) HandlesMe.Layout
Timer1.Enabled = True
EndSub

PrivateSub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
If isactive = TrueThen ls = Me.WindowState
Timer1.Enabled = False
EndSub

EndClass



البته این توضیح رو هم بدم که شما نباید از دستور showdialog برای فرمهاتون استفاده کنید. واسه اونم از کد زیر استفاده کنید.


Dim fo1 AsNew Form1
fo1.MdiParent = Me
fo1.Show()

کد زیر روی توی فرم پدر بنویسید، یعنی جایی که فرم رو اجرا میکنید. مثلا توی روال button1.click

yasaman1059
شنبه 09 تیر 1386, 18:17 عصر
سلام
میخوام وقتی دکمه ثبت رو تو برنامه می زنم یکی به فیلد کدم اضافه بشه
در ضمن زبان برنامه من vb.net است

yasaman1059
شنبه 09 تیر 1386, 18:19 عصر
[quote=yasaman1059;360098]سلام
میخوام وقتی دکمه ثبت رو تو برنامه می زنم یکی به فیلد کدم اضافه بشه
در ضمن زبان برنامه من vb.net است
لطفا راهنمایی کنید

yasaman1059
شنبه 09 تیر 1386, 18:21 عصر
سلام
میخوام وقتی دکمه ثبت رو تو برنامه می زنم یکی به فیلد کدم اضافه بشه
همچنین مقدار این فیلد تو تکست باکسم نشون بده
در ضمن زبان برنامه من vb.net است:لبخندساده:

leilav_1984
یک شنبه 10 تیر 1386, 15:44 عصر
همینکه BlackDal میگه
Dim frm As new Form1
frm.WindowStatre=FormWindowState.Normal
frm.MdiParent=Me
frm.Show()

leilav_1984
یک شنبه 10 تیر 1386, 15:46 عصر
سلام
میخوام وقتی دکمه ثبت رو تو برنامه می زنم یکی به فیلد کدم اضافه بشه
در ضمن زبان برنامه من vb.net است

شما باید Topic جدید باز کنی