PDA

View Full Version : سوال: Refresh کردن فرم اصلی از طریق فرم فرزند



meysampaknahad
دوشنبه 04 بهمن 1389, 09:46 صبح
با سلام
من در فرم اصلی یک پنل دارم و میخام وقتی کاربر در فرم فرزند روی دکمه Start کلیک کرد بعد از بسته شدن فرم ، backcolor این پنل در فرم اصلی تغییر کنه.

در فرم فرزند این کد رو نوشتم :

frmMain frmmain = new frmMain();
frmmain.timer1.Enabled = true;
frmmain.Refresh();

و در فرم اصلی هم برای کنترل Timer کد زیر رو نوشتم :

pnlComputer1.BackColor = System.Drawing.Color.White;

ولی کار نمی کنه.

لطفاً راهنمایی کنید.

Hossenbor
دوشنبه 04 بهمن 1389, 10:33 صبح
تایمر فعال یا نه الگوریتمشو اگه میشه بگی شاید بتونم راهنمایی کنم راستی چرا تو تایمر گئاشتی مگه نمیخوای یکبار رنگش عوض بشه

meysampaknahad
دوشنبه 04 بهمن 1389, 10:41 صبح
تایمر رو تویه کد فرزند فعال کردم دیگه

frmmain.timer1.Enabled = true;


تویه تایمر گذاشتم چون وضعیتش باید هر ثانیه چک بشه. در واقع وقتی استارت میشه میخام بک گراندش عوض شه و وقتی استوپ
کلیک شد بک گراندش برگرده به حالت اول.
حالا بحث تایمر نیست . کلاً رفرش نمیشه یعنی اگه مستقیم تویه فرم فرزند کد زیر رو قرار بدم

frmMain frmmain = new frmMain();
frmmain.pnlComputer1.BackColor = System.Drawing.Color.White;
frmmain.Refresh();
باز هم اجرا نمیشه

Hossenbor
دوشنبه 04 بهمن 1389, 14:12 عصر
سلام خدمت آقا میثم گل اگه کدت اینجوری باشه میدونی مشکلت از کجاست شکل درست کد اینجوری میشه

frmMain frmmain = new frmMain();
frmMain.show();
frmmain.pnlComputer1.BackColor = System.Drawing.Color.White;
frmmain.Refresh();

meysampaknahad
دوشنبه 04 بهمن 1389, 15:28 عصر
بله عزیز این راه رو میدونم. مشکل من اینجاست که فرم اصلی من باز هست. و اگر از این کد شما استفاده کنم یه فرم دیگه برام باز می کنه. یعنی میشه دو تا فرم اصلی.
من میخام در حالتی که فرم اصلی باز هست و فرم فرزند در حال اجرا هست با زدن دکمه استارت بک گراند کنترلم روی فرم اصلی تغییر کنه.

Hossenbor
دوشنبه 04 بهمن 1389, 19:51 عصر
آقا میثم سواد ما تا همینقدره ببین به دردت میخوره یا نه البته ما چونکه استقلالیم اون سفیدشو کردم آبی ان شا الله مشکلت حل بشه

meysampaknahad
دوشنبه 04 بهمن 1389, 21:54 عصر
دم شما گرم ولی هنوز مشکل پابرجاست. چون فرم اول باز هستش.
به هر حال ممنون

meysampaknahad
چهارشنبه 06 بهمن 1389, 17:41 عصر
آقا کسی نبود بلد باشه؟

JaguarXF
پنج شنبه 07 بهمن 1389, 07:00 صبح
یا من خیلی خسته ام یا تو!


من در فرم اصلی یک پنل دارم و میخام وقتی کاربر در فرم فرزند روی دکمه Start کلیک کرد بعد از بسته شدن فرم ، backcolor این پنل در فرم اصلی تغییر کنه.

در فرم فرزند این کد رو نوشتم :

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

بعد اصلا اگه تک رنگ هست تایمر میخواد چیکار؟

اصلا سوال چیه؟؟؟: یک فرم فرزند هست با یک دکمه استارت داخلش. وقتی دکمه استارت رو زدیم این فرم فرزند باید بسته بشه و رنگ یک پنل داخل فرم اصلی تغییر کنه؟ مشکل اینه؟


حالا فارغ از همه اینها فکر کنم مشکل شما در مفاهیم شی گرایی باشه. میدونی new چکار میکنه ؟ در کدی که گذاشته ای داری یک شی جدید میسازی بعد انتظار داری رنگ یک جایی رو درشی قدیمی برایت عوض کند؟

نگاهی به Application.OpenForms بینداز
اگر همچنان مشکل رفرش داشتی بجای رفرش از دستور Invalidate استفاده کن.

meysampaknahad
پنج شنبه 07 بهمن 1389, 13:25 عصر
سلام
حق با شما بود . مشکلم در مفهوم شی گرائی بود.
الان درست شد و کار می کنه.
بسیار ممنون از راهنمائی شما