حالت باز شدن فرم ها در حالت های child و parent
وقتی از mdiParent استفاده میشه اگه یکی از فرم های child رو max کنیم تمام فرمهای بعدی هم که روی اون باز میشن بصورت ماکس باز میشن. حالا ما اگه نخوایم اینطور بشه یعنی فرمهای بعدی یه اندازه خاصی داشته باشن کاری از دستمون بر نمیاد. حد اقل من که نتونستنم. یعنی اگه فرم رو فیکس کنیم باز هم ماکسیمم میشه. حالا اگه ماکسیمم سایز براش تعریف کنیم. دیگه ماکس باز نمیشه اما تمام فرمهای پرنتش رو هم که ماکس هستند بصورت عادی در میاره.
ضمنا چون از حالت parent و child استفاده میکنم نیمتوم فرم ها رو بصورت مودال show کنم. showdialog تو این حالت جواب نمیده.
این مشگل حل شدنی هست؟
لطفا اگه جواب امتحان شده ای دارین من رو هم راهنمایی کنید.
از یه تایمر و کد زیر استفاده کن
سلام
اگه منظورتون رو درست متوجه شدم باشم مشکل شما اینه که تمام فرمهای چیلد شما از یه 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