PDA

View Full Version : طریقه استفاده از progressbar



mansoooreh
چهارشنبه 12 خرداد 1389, 15:40 عصر
سلام
من می خوام برای برنامه ام یک پروگرس بار بذارم، اما موقع اجرای برنامه (همون قسمتی که باید پروگرس بارم کار کنه) از حرکت می ایسته و هیچ کاری نمی کنه،(از این خط های سبز توش نمیاد و بره)
به نظرتون باید چه کار کنم؟

behnam25214
چهارشنبه 12 خرداد 1389, 16:21 عصر
سلام:چشمک:
برای این کار باید یک تایمر ایجاد کنی تا در هر ثانیه به اون اضافه بشه.
یه مثال برات گذاشتم.

mansoooreh
چهارشنبه 12 خرداد 1389, 16:45 عصر
آخه مشکلم اینه که وقتی داره کار انجام میشه اصلا تایمر تیک عمل نمی کنه!!!!
برک پوینتی که میذارم اونجا اصلا فعال نمیشه!!(در هنگام دیباگ)

Jean Reno
چهارشنبه 12 خرداد 1389, 17:10 عصر
اگه تایمر خود را از طریق کد ایجاد کرده باشید بایستی تابع تیکی که براش می نویسید برای Event مربوطه هندل کنید

به عنوان مثال :




Timer Obj_Timer = new Timer();
Obj_Timer.Enabled = true;
Obj_Timer.Interval = 1000;

Obj_Timer.Tick += new EventHandler(My_Timer_Tick);


private void My_Timer_Tick(object sender, EventArgs e)
{
/// دستورات تایمر
}

sds1920
چهارشنبه 12 خرداد 1389, 18:30 عصر
شما اصلا تايمر رو Start كردي؟
فكر كنم اول بايد تابع ()Start رو فراخوني كني.

MSN_Issue
چهارشنبه 12 خرداد 1389, 20:01 عصر
آخه مشکلم اینه که وقتی داره کار انجام میشه اصلا تایمر تیک عمل نمی کنه!!!!
برک پوینتی که میذارم اونجا اصلا فعال نمیشه!!(در هنگام دیباگ)
فکر کنم شما میخواید یه کاری مثل کپی کردن یه فایل (که زمان بر هست ) رو انجام بدید ... !
شما برای این کار باید از BackGroundWorker (یا Thread ) استفاده کنید تا بتونید در زمان انجام کار از درصد پیشرفت کار مطلع بشید .

mansoooreh
پنج شنبه 13 خرداد 1389, 08:02 صبح
سلام
کار من انجام یک query از دیتابیس و لود کردن نتیجه در دیتاگرید است. میشه در مورد این background worker توضیح بدی؟
اگر چندین پروسه داشته باشی که نیاز به پروگرس بار داره چی؟ من نتونستم بفهمم چند کار رو چه شکلی با background worker هندل کنم؟

mansoooreh
پنج شنبه 13 خرداد 1389, 11:23 صبح
کسی نظری نداره؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟

mohamad.zakery
جمعه 14 خرداد 1389, 00:17 صبح
backgroundWorker دارای چند event مهم هست که اصلیاش DoWork و RunWorkerCompleted هستن.شما اول باید در load برنامت متد RunWorkerAsync را اجرا کنی در تابع هندلر رویداد DoWork شما میتوانی به پروگرسبارت مقدار بدی ،مثلا ماکزیمم رو 5 بگیر سپس به این شکل عمل کن:
کانکشن که باز شدمقدار پروگرسبارت رو 2 کن ،زمانی که متد execute دیتاآداپترت و یا هر شی دیگرت اجرا شد مقدار پروگرسبارت رو 4 کن و زمانی که کانکشنت رو بستی مقدار پروگسبارت رو 5 کن.
در رویداد RunWorkerCompleted شی backgroundWorker این و اون پروگرسبارت رو نابود کن به همین راحتی!!!!!

mansoooreh
یک شنبه 16 خرداد 1389, 13:12 عصر
سلام
میشه کدش رو هم بذارید. ممنون میشم