PDA

View Full Version : سوال: visible کردن پیکتچرباکس یک فرم از فرم دیگر !



mehrdad1991h
جمعه 27 اردیبهشت 1392, 19:29 عصر
سلام من دو عدد فرم دارم داخل ادلی یک دکمه هست و داخل دومی یک pictureBox
الان میخوام وقتی کاربر روی دکمه کلیک کرد پیکتچر باکس visible شود و سپس فرم نمایش داده شود
الان من چگونه میتونم این کار را انجام دهم ؟
modifire پیکتچرباکس را روی پابلیک گذاشتم با این حال دسترسی بهش ندارم از طریق فرم 1
چرا ؟

اگر امکانش هست نمونه لطف کنید
من اینگونه اقدام می خواستم بکنم
Form frm = new Form1();
frm.picbox.Visible = true;
بعدش هم frm.showdialog(); خوب الان
2 مشکل داره یکی این که اینجوری ظاهرا شدنی نیست
دوم نمیدونم چرا دسترسی به picbox ندارم !!!

vistacali
جمعه 27 اردیبهشت 1392, 19:38 عصر
عذر خواهی میکنم ولی من کلا سوال رو نفهمیدم چیزی که درک کردم این بوده خوب وقتی فرم نشون داده نشده که کاربر پیکچر باکس رو نمیبینه چرا ما بیاییم اونو دیگه ویزیبل کنیم ؟

mehrdad1991h
جمعه 27 اردیبهشت 1392, 19:44 عصر
عذر خواهی میکنم ولی من کلا سوال رو نفهمیدم چیزی که درک کردم این بوده خوب وقتی فرم نشون داده نشده که کاربر پیکچر باکس رو نمیبینه چرا ما بیاییم اونو دیگه ویزیبل کنیم ؟

ببین من چندتا دکمه روی فرم اولم دارم بسته به این که روی کدام دکمه کلیک میشه یه سری از پیکتچر باکس ها باید نمایش داده بشه به کاربر یه سریشون نمایش داده نشود

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

vistacali
جمعه 27 اردیبهشت 1392, 19:53 عصر
ببین من چندتا دکمه روی فرم اولم دارم بسته به این که روی کدام دکمه کلیک میشه یه سری از پیکتچر باکس ها باید نمایش داده بشه به کاربر یه سریشون نمایش داده نشود

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

خوب بیا توی form load فرم دومت دستور ویزیبل شدن رو بزار و توی دکمه فقط بنویس فرم نمایش داده بشه

mehrdad1991h
جمعه 27 اردیبهشت 1392, 20:01 عصر
خوب بیا توی form load فرم دومت دستور ویزیبل شدن رو بزار و توی دکمه فقط بنویس فرم نمایش داده بشه

ای بابا نمیشه خوب
بابا فرمی که قراره نمایش داده بشه برای بکگراند ورکر هستش
حالا نصبت به کاری که بکگراند ورکر میکنه یه سری نوشته ها و عکس ها را باید نشون بدهد
الان توی فرم لود اگر بخوام بزنم من از کجا بفهمم قراره چه اتفاقی بیوفته که بتونم بفهمم کودوم را نمایش بدم کودوم را نمایشی ندم چیزی میگینا

بابا من میخوام توی فرم اولم بتونم پیکتچرباکس فرم دوم را ویزیبل و اینویزیبل کنم همین تموم شد و رفت
حالا چجوری ؟

hojjatshariffam
جمعه 27 اردیبهشت 1392, 20:10 عصر
دسترسی که داری وگرنه نمی تونستی سطر دوم رو بنویسی
ولی یه مشکلی داره اونم اینه که با شو دیالوگ فرم دومی میاد روش و دیگه دسترسی به فرم اولی نداری که تغییرات رو بهش بدی
شما ویزیبل رو true کردی یعنی چیزی که نشون داده شده ور دوباره true کردی پس عملا چیزی رو تغییر ندادی
پس فالس کن تا ببینی که میشه
کدت رو اینجوری بنویس تا تغییر رو احساس کنی


Form frm = new Form1();
frm.Show();
بعد یه دکمه بزار تو فرم اولی و تو متد کلیکش اینو بنویس

frm.picbox.Visible =(frm.picbox.Visible?false: true);

فقط اون خط اول تو کد اولی رو گلوبال تعریف کن تا بتونی تو رویداد کلیک اون دکمه بتونی ازش استفاده کنی
ضمنا این روش یک روش استاندارد نیست فقط خواستم کد خودتو اصلاح کرده باشم
روش های پاس مقادیر به کلاسها رو جستجو کن مثال های زیادی براش پیدا می کنی

vistacali
جمعه 27 اردیبهشت 1392, 20:14 عصر
104302
ای بابا نمیشه خوب
بابا فرمی که قراره نمایش داده بشه برای بکگراند ورکر هستش
حالا نصبت به کاری که بکگراند ورکر میکنه یه سری نوشته ها و عکس ها را باید نشون بدهد
الان توی فرم لود اگر بخوام بزنم من از کجا بفهمم قراره چه اتفاقی بیوفته که بتونم بفهمم کودوم را نمایش بدم کودوم را نمایشی ندم چیزی میگینا

بابا من میخوام توی فرم اولم بتونم پیکتچرباکس فرم دوم را ویزیبل و اینویزیبل کنم همین تموم شد و رفت
حالا چجوری ؟

چرا میزنی؟؟؟؟؟؟؟:افسرده: نمونه کد رو دانلود کن104302

فکر کنم دوستمون جای نمایش پیکچر باکس رو بد جایی گذاشته باید قبل شودیالوگ بزاری

hojjatshariffam
جمعه 27 اردیبهشت 1392, 20:16 عصر
اوکی فکر کنم شما جون از بک گراند ورکر استفاده می کنی خطای Cross Thread رو میده آره؟
اگه اینجوریه بگو تا یه روش بهت بگم
چون یه سری پراپرتی ها خودشون برای خودشون ترید دارن و وقتی برای استفاده می خوای از یه ترید دیگه مثل بک گراند ورکر استفاده می کنی خطای بالا رو میده

mehrdad1991h
جمعه 27 اردیبهشت 1392, 20:22 عصر
اوکی فکر کنم شما جون از بک گراند ورکر استفاده می کنی خطای Cross Thread رو میده آره؟
اگه اینجوریه بگو تا یه روش بهت بگم
چون یه سری پراپرتی ها خودشون برای خودشون ترید دارن و وقتی برای استفاده می خوای از یه ترید دیگه مثل بک گراند ورکر استفاده می کنی خطای بالا رو میده

بابا من دسترسی ندارم کد را خودم نوشتم اینجا بزارم نمونه باشه وگرنه picbox را نمیشناسه اصلا این در صورتیه که مودیفایرش پابلیک هست با این وجود کنترل پیکتچر باکس را نمیاره تو لیست کنترل ها داخل فرم 1 که ویزیبلش کنم
این را نمیشناسه اصلا
frm.picbox.Visible
خطا هم نمیده چون فرم را نمیفرستم توی بک گراند ورکر

نمونه کد (برنامه) هم کار نمیده ویژوال 2010 دارم :) ولی سورسش را دیدم ... خوب بابا نمیده بهمن دسترسی برای پیکتچر باکس !!!!!!

-------------ادیت---------------------
اصلا یه کار دیگه کردم یه کلاس ساختم و از طریق اون ویزیبل بودنش را چک کردم شد

hojjatshariffam
جمعه 27 اردیبهشت 1392, 20:33 عصر
میشه حتما میشه شای یه جایی مشکلی هست
اگه نمونه میزاشتی بهتر میتونستیم کمکت کنیم
خب 2010 باشه چه عیبی داره
به هر حال خدا رو شکر که خب شده