بخشی از پاورپوینت
اسلاید 1 :
برنامه های چند فرمی MDI
برنامه های MDIکاربران راقادرمی سازدتادریک زمان به کارباچندمستندبپردازند.همچنین برنامه های MDIدارای محیط بسیارپیچیده تری هستندوازویژگی های زیادتری برخوردارمی باشند.
پنجره اصلی برنامه MDIبعنوان پنجره والدشناخته می شودوهرپنجره موجوددردرون پنجره اصلی برنامه پنجره فرزندنام دارد.
یک برنامه MDIمی تواند پنجره های فرزند متعددی داشته باشدوهرکدام دارای یک پنجره والد باشند.عملکردوتوابع یک پنجره فرزندمی تواندمتفاوت ازعملکرد و توابع دیگر پنجره های فرزند باشد.برای مثال ممکن است یکی ازپنجره های فرزندتصویر نمایش دهد ودیگری عمل ویرایش متن انجام دهدوسومی پنجره ترافیک شبکه رانشان دهد درحالیکه هر سه پنجره متعلق به یک والدMDIهستند.
اسلاید 2 :
شروع به کار طراحی به روش MDI
برای ایجادیک فرم MDIیک فرم جدید ایجاد کرده و خاصیت Is MDI Containerآنرابه Trueتغییر دهید.سپس یک کلاس فرم فرزند ایجادوبه فرم اضافه می کنیم .برای انجام اینکاربرروی پروژه درپنجره Solution Explorerکلیک راست انجام داده وازمنوی ظاهرشده Add Windows Form…راانتخاب کنیم.برای افزودن فرم فرزند به والد بایستی یک شی فرم فرزندجدید ایجادکرده و خصیصه MDI Parentآنرا با فرم والد تنظیم ومتد Showرافراخوانی کرد.بطورکلی افزودن یک فرم فرزندبه یک والد باعبارت زیر صورت می گیرد.
Dim FrmChild As New ChildFormClass()
FrmChild.MdiParent=frmParent
frmChild.Show()
اسلاید 3 :
خصوصیات ورویدادفرم های MDI
خصوصیات فرزندMDI
IsMdiChild براین نکته دلالت می کندکه فرم یک فرزندMDIاست.اگرTrueباشدفرم فرزندMDIخواهدبود.
MdiParentمشخص می کنند والد فرم فرزند است.
خصوصیات والدMDI
ActiveMdiChildفرمی که درحال حاضرفرزندفعال MDIاست رابرگشت می دهد(اگر هیچکدام ازفرزندان فعال نباشند مقدارNothingبرگشت می دهد)
IsMdiContainerتعیین می کند که آیا فرم می تواند یک MDIوالد باشد یاخیر.اگرTrueباشد فرم می تواند یک والدMDIباشد.مقدار پیش فرض Falseاست.
MdiChildenفرزندانMDIرابه عنوان آرایه ای ازفرم ها برگشت می دهد.
متدLayoutMDIطریقه به نمایش درآمدن فرم های فرزند بر روی یک والدMDIراتعیین می کند.مقادیر ممکنه برای این متدعبارتندازArrangeIcone- CasCade-TileHorizontalوTileVertical.
رویداد(Event Argsآرگومان رویداد-EventHandlerنمایند)
MdiChildActive زمانیکه فرزندMDIبسته یا فعال می شود رخ می دهد.
اسلاید 4 :
فرم های والد وفرزند می توانند منوهای متفاوتی داشته باشند که درزمان انتخاب پنجره فرزند با یکدیگر ادغام شوند.برای ادغام منوها برنامه نویس می تواند خصوصیات MergeOrderوMergeTypeرابرای هرآیتم منو(MenuItem)تنظیم نماید.خصیصه MergeOrderتعیین کننده ترتیبی است که آیتم های منو به هنگام ادغام دو منو به نمایش در می آیند.آیتم منوی که دارای کمترین مقدارMergeOrderباشد درابتدا ظاهر می شود.برای مثال اگرMenu1دارای آیتم های File-EditوWindow(با ترتیب 20-1-0)باشد وMenu2
دارای آیتم های FormatوView(باترتیب 7و15)باشد پس ازادغام این دو منو ترتیب به صورتFile-Format-Edit-ViewوWindowخواهد بود.
هرمنوآیتم دارای خصیصه MergeOrderمتعلق به خود است.دربرخی ازمواقع احتمال اینکه دو منوآیتم دارای مقدار یکسانی برای MergeOrderباشند وجود دارد.خصیصه MergeTypeاین تداخل را با تعیین ترتیب به نمایش در آمدن دو منو برطرف می کند.
خصیصه MergeTypeیک نوع شمارشی از نوع MenuMergeدریافت وتعیین می کند که کدام آیتم های منو به هنگام ادغام دو منو به نمایش در ایند. یک آیتم منو با مقدارAddبه عنوان یک منوی جدید به میله منوی والد خود اضافه می شود.اگرمنوی یک فرم فرزند دارای مفدارReplaceباشد درزمان ادغام مبادرت به جایگزینی با آیتم های منوی متناسب با خود درفرم والد می کند.منوی بامقدارMergeItemsآیتم های خودرابا منوی متناظر در والد خود ترکیب می کند.یک آیتم منوی فرزند بامقدار Removeبه هنگام ادغام منوبا یکی از آیتم های منوی والد خود ناپدید می شود.
اسلاید 5 :
اگرMergeTypeمنوی والد متفاوت از MergeTypeمنوی فرزند باشد مقدارMergeItemsبی تاثیر خواهد شد.ویژوال بیسیک .NETخصیصه ای تدارک دیده است که به کمک آن تعیین اینکه کدام پنجره فرزند در درون حامل MDIباز است براحتی میسر می شود.خصیصه MdiList(یک مقدار بولی )از کلاس MenuItemتعیین می کند که آیا MenuItemلیستی از پنجره های فرزند باز شده رابه نمایش درآورد یا خیر.
لیست درپایین منو وپس از یک جداکننده به نمایش در می آید.هنگامی که یک پنجره فرزند جدید باز شود نام آن به لیست افزوده می گردد.اگر تعداد پنجره های باز شده بیش از 9 عدد باشد بخشی با عنوان MoreWindowsبه انتهای لیست افزوده شده و به کاربر امکان
می دهد تا پنجره ای را از یک لیست و با استفاده از میله لغزنده انتخاب کند.
اسلاید 6 :
حامل های MDIبه برنامه نویسان اجازه می دهند تا نحوه به نمایش در آمدن پنجره های فرزند را مشخص سازند(به لحاظ مکانی ). پنجره های فرزند دریک برنامه MDIرا می توان با فراخوانی متدLayoutMdiفرم والد سازماندهی و ترتیب دهی کرد.متد LayoutMdiیک نوع شمارشی با مقادیرArrangeIcons(ترتیب ایکونی) Cascade(آبشاری) TileHorizontal(کاشی افقی )و TileVertical(کاشی عمودی )دریافت می کند.
در پنجره های کاشی شده سطح پنجره والد بطور کامل پوشش داده می شود.
اسلاید 7 :
- اگر بخواهیم فرمی ایجاد کنیم که مشابه یک جعبه پیغام عمل کند یعنی اینکه تا زمانی که بسته نشود نتوان از برنامه استفاده کرد باید دستورات زیر را نوشت.