PDA

View Full Version : بررسی باز بودن یک فرم



فاطمه هاشمیان
پنج شنبه 26 خرداد 1384, 16:42 عصر
اگر از داخل یک فرم از برنامه بخواهیم بررسی کنیم یک فرم دیگه ای از برنامه باز است یا نه چه کدی باید بنویسیم ؟
با تشکر :)

فاطمه هاشمیان
جمعه 27 خرداد 1384, 07:25 صبح
کسی نمیدونه :cry:
ممنون میشم راهنمایی کنید

omid_Ahmadi
جمعه 27 خرداد 1384, 09:01 صبح
وقتی شما از یک فرم یه نمونه میگیرید یا اون رو به صورت Modal یا non-Modal نمایش میدید.
اگر به صورت Modal نمایش بدید که برنامه نمیتونه به قسمت قبلی برگرده تا زمانی که فرم بسته نشه پس اگر برنامه به فزم قبلی برگشت یعنی فرم نمایش داده شده بسته شده.
اگر به صورت non-Modal نمایش داده بشه وقتی فرم بسته است شییی که محتوی فرم مذکور است برابر null است. البته منظور از بسته بودن تنها نمایش دیده نشدن فرم نیست بلکه کلا از حافظه هم خارج شده باشد و Dispose شده باشد.
:موفق:

فاطمه هاشمیان
شنبه 28 خرداد 1384, 17:19 عصر
من روی فرم شماره یکم یک Timer گذاشتم که در زمانهای خاصی فرم شماره 2 رو نمایش میده میخواستم از تو Form شماره 1 بررسی کنم اگه فرم شماره 2 باز بود دیگه اون رو نشون نده و فقط فرم شماره 2 را Refresh کند و در ضمن میخوام فرم شماره 2 Modal باز شود ؟
با تشکر از توجهتون

EhsanKhafan
یک شنبه 29 خرداد 1384, 08:49 صبح
اگه فرم شماره 2 باز بود

شما منظورتون از باز بودن دقیقا چیه؟
اگه

myfrmMain.Visible=false
به نظرتون فرمتون رو میبنده خوب میشه با ارسال handle فرم 2 برای فرم 1 اون رو از فرم 1 کنترل کنی.

ولی اگه منظورتون اینه که ببینیم آیا فرم 2 چند بار نمونه سازی شده(چند تا ازش تو حافظه ساخته شده)یکمی کار پیچیده تری. . .شاید یک آرایه از handle نمونه ها بتونه کمک کنه.

فاطمه هاشمیان
یک شنبه 29 خرداد 1384, 09:23 صبح
منظورم اینه که فرم شماره 2 (Form2.show اجرا شده یا نه ) داره به کاربر نشون داده میشه یا نه

به نظرتون فرمتون رو میبنده خوب میشه با ارسال handle فرم 2 برای فرم 1 اون رو از فرم 1 کنترل کنی
میشه بیشتر توضیح بدید؟

lilac7531
یک شنبه 29 خرداد 1384, 09:28 صبح
چرا از رجیستری استفاده نمی کنی؟
دستت خیلی باز میشه!

dot_net_lover2
یک شنبه 29 خرداد 1384, 09:51 صبح
در ضمن میخوام فرم شماره 2 Modal باز شود

اگر Modal باز شود همینطور که دوستان گفتند تا بسته نشه به قسمت قبلی برنمیگردد.

EhsanKhafan
یک شنبه 29 خرداد 1384, 11:03 صبح
handle در واقع اون متغییری که به نمونه فرم اشاره میکنه:

handle=new Form1()
خوب تا وقتی اون متغییر رو داشته باشی میتونی فرمتو کنترل کنی .
یعنی با داشتم اون متغییر میتوشه نمونه ساخته شده از فرم رو مخفی یا آشکار یا dispose کرد . . .
لذا داشتن نمونه ساخته شده از فرم برا ی دسترسی به اون حیاتیه که این نمونه رو من handle فرم میگم.


<span dir=ltr>also i wrote some guid in my weblog:http://notvoid.persianblog.com/</span>

فاطمه هاشمیان
یک شنبه 29 خرداد 1384, 14:55 عصر
ممنونم

small_programmer
یک شنبه 29 خرداد 1384, 21:53 عصر
سلام
1-یک متغییر عضو کلاس از نوع فرم2 تعریف کنید


private Form2 f1;
2-در رویداد timer کد زیر را وارد کنید

if&#40;f1==null || f1.IsDisposed&#41;
&#123;
f1=new Form&#40;&#41;;
f1.ShowDialog&#40;&#41;;
&#125;
3-در رویداد closed فرم 2 دستور زیر را وارد کنید
Dispose&#40;&#41;;

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

:موفق:

dot_net_lover2
دوشنبه 30 خرداد 1384, 01:19 صبح
من این روش را قبلا تست زدم ولی یک مشکل دارد.



Error &#58; Use of unassigned local variable

فاطمه هاشمیان
دوشنبه 30 خرداد 1384, 08:40 صبح
از همه شما که راهنمایی کردید ممنونم

small_programmer
دوشنبه 30 خرداد 1384, 17:08 عصر
خواهش می کنم.
همانطور که می بینید با توجه به private بودن آن local نیست بلکه عضو کلاس است نه متغیر محلی یک تابع.
(این برنامه را تست کرده ام)
:موفق:

dot_net_lover2
دوشنبه 30 خرداد 1384, 17:15 عصر
:embr: درسته دوست عزیز مشکل برنامه من همین Private بود
ممنون از توجه

AspNet
دوشنبه 30 خرداد 1384, 20:31 عصر
منم مرسی
لازم داشتم :)

فاطمه هاشمیان
پنج شنبه 02 تیر 1384, 13:51 عصر
حالا من اگهبخوام فرم شماره 2 را که باز است از داخل فرم شماره 1 dispose کنم باید چه کدی بنویسم دستور Dispose برای Myfrm جواب نمیدهد ؟ :گیج:
ممنونم میشم راهنمایی کنید

AspNet
پنج شنبه 02 تیر 1384, 18:51 عصر
خب چرا میخواید از داخل فرم 1 dispose کنید؟؟
میتونید از داخل فرم1 فرم2 رو ببندید و در رویدار closing فرم2 هم dispose رو قرار بدید

فاطمه هاشمیان
پنج شنبه 02 تیر 1384, 20:52 عصر
حالا اگه بخوام ببندم چه دستورس باید بنویسم آخه بسته هم نمیشه لطف میکنید کدش رو برم بذارید :sorry:

AspNet
پنج شنبه 02 تیر 1384, 21:54 عصر
form.close&#40;&#41;;

:)

فاطمه هاشمیان
جمعه 03 تیر 1384, 10:09 صبح
ممنونم :oops: