نوشته شده توسط
mr_moghimkhani
ا
ز نحوه سئوال شما اینگونه بر می آید که استفاده از ShowDialog دارای معایبی است، اگر چنین است، بیان کنید تا من هم متوجه بشوم، ولی من تا به حال چیزی از معایب آن نشنیده ام. و همیشه بنا به مصلحت و تفاوت آن با Show ازش استفاده می کرده ام و این هم روشی است که فکر کنم برای شروع کار خوب باشد. اگر مطالب بیشتری می دانید خوشحال مشم که به من هم بگید دوست عزیز.
خیر من چنین چیزی نگفتم، فقط پرسیدم آیا همیشه استفاده از اون مفیده؟
نوشته شده توسط
sinpin
حق با شماست، با محدود کردن شرایط و مفروضات مساله میشه راه حل ساده تری ارائه داد. اما آیا استفاده از ShowDialog همواره راه حل خوبی است؟
فرض کنید فرمی که در این مثال hide شده (فرم 1) به دلایلی لازم باشه لحظه ای show بشه و همانطور که فرم 2 باز است کاربر بخواهد اطلاعاتی را در آن وارد کند. در آنصورت اگر ما فرم2 رو بصورت مودال باز کرده باشیم ؛ مادامیکه فرم جدید را نبندیم این امکان را نخواهیم داشت که با فرم قبلی کار کنیم.
بصورت خلاصه : راه حل شما کاملا صحیح است اما برای حالت خاص (یعنی ممکنه همیشه کار با یک فرم به این سادگی نباشه...)
Forms and dialog boxes are either modal or modeless. A
modal form or dialog box must be closed or hidden before you can continue working with the rest of the application. For more information about working with dialog boxes, see
User Input to Dialog Boxes.
Dialog boxes that display important messages should always be modal. The
About dialog box in Visual Studio is an example of a modal dialog box.
MessageBox is a modal form you can use.
Modeless forms let you shift the focus between the form and another form without having to close the initial form. The user can continue to work elsewhere in any application while the form is displayed.
Modeless forms are harder to program, because users can access them in an unpredictable order. You have to keep the state of the application consistent no matter what the user does. Often, tool windows are shown in a modeless fashion.
The Find dialog box, accessible from the
Edit menu in Visual Studio, is an example of a modeless dialog box.
Use modeless forms to display frequently used commands or information .
منبع : http://msdn2.microsoft.com/en-us/library/39wcs2dh(VS.80).aspx
با توجه به متن بالا : فرضا در یک ویرایشگر متن، فرم Find حتما باید بصورت Modeless باز شود (چون کاربر میخواهد با فرم قبلی نیز تراکنش داشته باشد)