PDA

View Full Version : لودینگ در فرم



paria research for code
جمعه 12 تیر 1394, 00:11 صبح
سلام..لطفا بهم کمک کنید
من یه برنامه دارم که یه سری محاسبات انجام میده بعد تو تکست باکس ها نشون میده.. میخوام وقتی دکمه رو تو فرم میزنم مثلا 20 ثانیه یه کادر باز بشه که توش یه متن باشه و یه لودینگ توش بچرخه..از اون عکس ها... بعد جواب ها رو نشون بده..اگه کسی سمپل داره لطفا بهم بده...
اگه بخوام نوشته های توی تو اون کادر خط به خط ظاهر بشه(تو همون 20 ثانیه) که زیباتر بشه(با افکت های مختلف) آیا این کادر امکان پذیر هست؟

pbm_soy
جمعه 12 تیر 1394, 00:50 صبح
برای نمایش دادن یک عکس متحرک فقط کافیست یک PictureBox بروی فرم قرار بدید و در آن یک تصویر gif متحرک بذارید و خصوصیت visible آنرا برابر false قرار بدید تا دیده نشه و حالا وقتی باتن کلیک میشه visible آنرا True کنید و محاسبات را انجام دهید و وقفه را انجام دهید و سپس نتیجه را بروی فرم نمایش دهید و دوباره آن تصویر را مخفی کنید کد مورد نظر تقریبا این شکلی میشود


pictureBox1.Visible = true;
//انجام محاسبات
System.Threading.Thread.Sleep(20000); //وقفه
//نمایش نتیجه محاسبات
pictureBox1.Visible = false;


برای انجام وقفه روش دیگری نیز وجود دارد ابتدا باید یک کنترل تایمر بروی فرم قرار بدید و زمان(Interval) آنرا برابر 20000 میلی ثانیه بذارید و سپس در رخداد کلیک باتن تمحاسبات را انجام دهید و سپس تایمر را فعال کنید enabled را برابر true کنید و سپس در تایمر هم نتیجه محاسبات را نمایش دهید و خود تایمر را غیر فعال کنید

pbm_soy
جمعه 12 تیر 1394, 01:03 صبح
برای نمایش متن بصورت تیکه تیکه یک تایمر بروی فرم قرار بدید و زمان آنرا تنظیم کنید و سپس کد زیر را در رخداد tick آن بنویسید


int i = 0;
string str = "this is a test.";
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text += str[i];
i++;
if (i == str.Length)
{
i = 0;
label1.Text = "";
}

}


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

int i = 0;
string str = "this is a test.";
private void timer1_Tick(object sender, EventArgs e)
{
label1.Text = " " + label1.Text;
i++;
if (i == 30)
{
i = 0;
label1.Text = str;
}
}


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

pbm_soy
جمعه 12 تیر 1394, 01:08 صبح
نکته اساسی که من فراموش کردم اینه که شما برای اینکار بهتر است از progressBar استفاده کنید که میزان انجام محاسبات را بصورت درصدی برای کاربر نمایش خواهد داد چون ایجاد وقفه با تایمر و یا threadها یک کار دیمی میشود شما از کجا میدانید که محاسبات دقیقا 20ثانیه طول میکشد؟ شاید در هربار اجرا مدتهای متفاوتی ظول بکشد و همینطور در کامپیوترهای مختلف زمانهای متفاوت خواهد داد
هرچند که میتوانید روش قبلی را طوری بنویسید که براساس انجام شدن محاسبات زمانش طول بکشد

در ضمن برای مطالعه انجام کارهای متحرک میتوانید به لینک زیر مراجعه کنید
http://stackoverflow.com/questions/165735/how-do-you-show-animated-gifs-on-a-windows-form-c
http://www.codeproject.com/Tips/841159/Simple-Animation-for-your-Windows-Forms-or-Control

CsharpNevisi
جمعه 12 تیر 1394, 15:12 عصر
شما باید از برنامه نویسی چند نخی استفاده کنید .
اگر ترد اصلی شما برای نجام عملیات به زمان زیادی نیاز داشته باشهتصویر شما متحرک نخواهد بود و در عین حال اگه تصویر بالا و پایین کدهای در ترد اصلی نمایش و مخفی شود اصلا تصویری به نمایش در نخواهد آمد .. !!!!
کارهای طولانی که ممکنه ترد اصلی رو برای مدت زیادی که کاربر متوجه اون بشه رو درگیر میکنه باید داخل نخ های جدا نوشته بشه .. !!
یه نمونه کد براتون آماده کردم .. امیدوارم مشکلتون حل بشه ... !!!
تو کدها مشکلی بود همین جا مشکل رو مطرح کنید و پیام خصوصی بدین که تایپیک رو چک کنم .. !

paria research for code
جمعه 12 تیر 1394, 15:26 عصر
متاسفانه ویژوال 2010 دارم.نتونستم برنامتون رو باز کنم............

khokhan
جمعه 12 تیر 1394, 16:25 عصر
متاسفانه ویژوال 2010 دارم.نتونستم برنامتون رو باز کنم............:لبخند:
اینو امتحان کن .....

paria research for code
جمعه 12 تیر 1394, 17:46 عصر
یه سمپل کامل لطفا به من بدید....من نتونستم اینو درست اجرا بگیرم

khokhan
جمعه 12 تیر 1394, 18:33 عصر
یه سمپل کامل لطفا به من بدید....من نتونستم اینو درست اجرا بگیرم
شما سمپل کامل به چی می گین ...........:لبخند: همه چی داخل اون نمونه هست ..............
پروگرس بار گرد سفارشی نداره ؟؟؟ .... که داره!!!!!
با بک گرون اجرا نشده؟؟؟ ...... که شده!!!! دیگه چی می خوای آخه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟ والااااااااا

paria research for code
شنبه 13 تیر 1394, 15:42 عصر
دوست عزیز من نتونستم برنامه خیلی کاملتون رو ببینم....من visual 2010 دارم

محمد رضا فاتحی
شنبه 13 تیر 1394, 18:27 عصر
خوب توی vs2010 یه پروژه ایجاد کنید فایل ها رو انتقال بدید به داخل پروژه...