PDA

View Full Version : سوال: ایجاد تغییرات در صورت عدم کار کاربر برای مدت زمان مشخص(Timer)



آریوس_1985
پنج شنبه 10 مرداد 1387, 17:49 عصر
با سلام
من یه کد نوشتم تا اگر کاربر برای 5 ثانیه روی Form کلیک نکرده بود Opacity کم بشه.اما چون فقط برای Main_Click این کد رو نوشتم اگه کاربر مثلا روی یک Textbox کلیک کنه opacity به حالت اول بر نمیگرده.اگه بخوام این اتفاق بیفته باید برای هر چی که تو Form هست اونو بنویسم


private void timer1_Tick(object sender, EventArgs e)
{
this.Opacity = 1;
for (int i = 0; i < 70; i++)
{
this.Opacity -= 0.01;
Application.DoEvents();
}

}

private void Main_Click(object sender, EventArgs e)
{
if (this.Opacity != 1)
this.Opacity = 1;
timer1.Stop();
timer1.Start();
}
تابعی کسی سراغ نداره که بتونم بوسیله ی اون بفهمم که کاربر با Form کار میکنه یا نه؟
یا راه حل دیگه ای اگه کسی داشته باشه ممنون میشم!

Editali
پنج شنبه 10 مرداد 1387, 18:41 عصر
من اگه جات بودم به صورت زیر مینوشتم:



int time = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (time < 500) time++;
else
if (Opacity >0.2) Opacity -= 0.01;
}

private void Form1_Click(object sender, EventArgs e)
{
Opacity = 1;
time = 0;
}


برای TextBox هم میتونی از Properties -> Events با کلیک کردن بر روی فیلد رویداد مورد نظر از متدی که برای فرم نوشتی استفاده کنی.

Editali
پنج شنبه 10 مرداد 1387, 18:44 عصر
راستی یادم رفت بگم، interval تایمر رو 500 در اینجا 10 گذاشتم. یعنی 5 ثانیه تا تغییر زمان میبره.

آریوس_1985
جمعه 11 مرداد 1387, 23:28 عصر
من اگه جات بودم به صورت زیر مینوشتم:



int time = 0;
private void timer1_Tick(object sender, EventArgs e)
{
if (time < 500) time++;
else
if (Opacity >0.2) Opacity -= 0.01;
}

private void Form1_Click(object sender, EventArgs e)
{
Opacity = 1;
time = 0;
}
برای TextBox هم میتونی از Properties -> Events با کلیک کردن بر روی فیلد رویداد مورد نظر از متدی که برای فرم نوشتی استفاده کنی.

ممنون اما من دنبال یک تابعی میگشتم که مجبور نشم برای همه ی Textbox,Button,... Event بنویسم.یه چیز کلی که وقتی Mouse روی برنامه حرکت میکنه یا کلیک میکنه اون تابع بفهمه!!
اصلا همچین چیزی هست یا نه؟؟؟