PDA

View Full Version : متوقف کردن Timer بعد از اجرا



rooterror
شنبه 06 خرداد 1396, 13:48 عصر
سلام خسته نباشید


من تو برنامم از timer استفاده کردم

ولی نمیدونم چطور اونو بعد از انجام کارش متوقف کنم

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

بعد این همین طور هی میسازه

چجور بعد از اولین اجرا متوقفش کنم ؟

336699
شنبه 06 خرداد 1396, 15:34 عصر
سلام خسته نباشید


من تو برنامم از timer استفاده کردم

ولی نمیدونم چطور اونو بعد از انجام کارش متوقف کنم

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

بعد این همین طور هی میسازه

چجور بعد از اولین اجرا متوقفش کنم ؟

سلام

بدون تایمر هم میشه اینکارو کرد

میتونی کدهای مربوطه را در رویداد TextChanged تکست باکس قرار بدی :لبخند:


private void textBox1_TextChanged(object sender, EventArgs e)
{
//کد مورد نظر
}

group45
شنبه 06 خرداد 1396, 16:30 عصر
سلام

بدون تایمر هم میشه اینکارو کرد

میتونی کدهای مربوطه را در رویداد TextChanged تکست باکس قرار بدی :لبخند:


private void textBox1_TextChanged(object sender, EventArgs e)
{
//کد مورد نظر
}



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

336699
شنبه 06 خرداد 1396, 17:09 عصر
با سلام این کار اشتباه است چون با هر بار که تغییری در متن رخ دهد یک فایل جدید ساخته می شود یعنی حداقل به تعداد کاراکترهای متنتون شما فایل می سازید.
شما یه سرچ همینجا بزن و دنبال ایجاد فایل متنی باش. حتما به جواب میرسی.

این کد ، با فرض اینکه متن مورد نظر قبلا بصورت کامل ایجاد شده و در تکست باکس قرار گرفته درست کار میکنه :لبخند:

ولی اگر کاربر بخواهد متن را تایپ کند ، این روش جواب نمی دهد

در هر صورت ملت علم غیب ندارن که ، اون شخصی که سوال پرسیده منظورش چیه و دقیقا میخواد چیکار بکنه :متفکر:

به هر حال این روش از تایمر بهتره :لبخند:

rooterror
شنبه 06 خرداد 1396, 18:39 عصر
بله متاسفانه در هر دو صورت برنامه دچار هنگ میشه و هی اون کد تایمر اجرا میشه و فایل به دفعات خیلی زیاد ساخته میشه

:ناراحت:

Mahmoud.Afrad
شنبه 06 خرداد 1396, 18:52 عصر
از رویدادهای textbox و ... استفاده کنید. استفاده از تایمر برای این کار چندان جالب نیست. البته نگفتید چرا و چه زمانی نیاز به اینچنین چیزی دارید؟

0verlord
یک شنبه 07 خرداد 1396, 23:39 عصر
همون طور که گفتن بهتره که از اونت های تکست باکس استفاده کنید.
در مورد تایمر هم میشه آتوریست رو غیر فعال کرد که به این ترتیب فقط یکبار اجرا میشه:

var timer = new System.Timers.Timer (5000) { AutoReset = false };
timer.Elapsed += delegate { timer.Dispose();Save(TextBox.Text); };
timer.Start();

group45
دوشنبه 08 خرداد 1396, 12:45 عصر
این کد ، با فرض اینکه متن مورد نظر قبلا بصورت کامل ایجاد شده و در تکست باکس قرار گرفته درست کار میکنه :لبخند:

ولی اگر کاربر بخواهد متن را تایپ کند ، این روش جواب نمی دهد

در هر صورت ملت علم غیب ندارن که ، اون شخصی که سوال پرسیده منظورش چیه و دقیقا میخواد چیکار بکنه :متفکر:

به هر حال این روش از تایمر بهتره :لبخند:

دوست عزیز شما یه ایونت اضافه کردید که اگه تغییری در متن تکست باکس داده شد فعال بشه
حالا میشه به من بگید چطور این اجرا بشه زمانی که متن کامل نوشته شد.
تو برنامه نویسی اگه با یکسری فرضیات بخواید برنامتون رو بنویسید مطمئن باشید برنامتون پر اشکال و باگه.

_behnam_
دوشنبه 08 خرداد 1396, 22:16 عصر
سلام. روشی که جناب 336699 فرمودند بهتر از تامیر هستش.
دوست عزیز شما یا باید از رویداد TextChanged و اگر تعداد کنترل های فرم زیاد هست و مطمعن هستید ک کاربر فوکاس کنترل رو تغییر میده رویداد Leave پیشنهاد میده. در ضمن رویداد های فرم هم هست ک میتونید از اون ها استفاده کنید.
ولی با این حال قراره یه خط کد اجرا بشه و میتونید خودتون رو راحت کنید و از رویداد TextChanged استفاده کنید که هیچ مشکلی نداره.