PDA

View Full Version : نمایش لودینگ



ya ali
چهارشنبه 23 دی 1388, 15:52 عصر
سلام
سلام خدمت عزیزان
من در برنامه ام یک جستجو و تبادل اطلاعاتی با بانک خود دارم که چون اطلاعات دریافتی برای ریختن در Datagridviewبسیار زیاد است برنامه به صورت هنک در میاد . میخواستم فعال بودن برنامه خودم را با ابزار Prosegerbar به کاربر نشان بدم و در این زمینه هیچ اطلاعاتی ندارم لطفا کمکم کنید
ممنون یاعلی:متفکر:

mehdi.mousavi
چهارشنبه 23 دی 1388, 16:13 عصر
سلام من در برنامه ام یک جستجو و تبادل اطلاعاتی با بانک خود دارم که چون اطلاعات دریافتی برای ریختن در Datagridviewبسیار زیاد است برنامه به صورت هنک در میاد . میخواستم فعال بودن برنامه خودم را با ابزار Prosegerbar به کاربر نشان بدم و در این زمینه هیچ اطلاعاتی ندارم لطفا کمکم کنید ممنون یاعلی:متفکر:

سلام.
شما برای اینکار باید از یک Worker Thread استفاده کنید. نحوه استفاده از BackgroundWorker (http://barnamenevis.org/forum/showpost.php?p=880050&postcount=9)رو میتونید در این تاپیک بخونید.

موفق باشید.

ya ali
چهارشنبه 23 دی 1388, 17:05 عصر
از راه حلتون برای هنگ کردن ممنونم ولی چطور روند حرکت را با Prosegerbar به کاربر نشان بدم درضمن من مبتدی هستم یا علی

mehdi.mousavi
پنج شنبه 24 دی 1388, 11:54 صبح
از راه حلتون برای هنگ کردن ممنونم ولی چطور روند حرکت را با Prosegerbar به کاربر نشان بدم درضمن من مبتدی هستم یا علی

سلام.
شما بلدید با Progress Bar کار کنید؟ اگر خیر، لطفا به کتاب یا منبع دیگه ای رجوع کنید. من اونجا نحوه کار کردن با BackgroundWorker رو توضیح دادم و اینکه چطور میشه بکمک این کلاس، با UI کار کرد. حالا یکی مایله Progress Bar اش رو Update کنه، یکی وضعیت یکی از آیتمهای منو رو تغییر بده و ... این مسائل دیگه ربطی به Thread نداره.

موفق باشید.

پاورقی: میتونید این مقاله رو بخونید (http://www.c-sharpcorner.com/UploadFile/mahesh/WorkingwithProgressBarinCSharp11302005045625AM/WorkingwithProgressBarinCSharp.aspx) تا کار کردن با Progress Bar رو سریع یاد بگیرید.

saed2006
پنج شنبه 24 دی 1388, 13:38 عصر
به نظر من چون ممکنه نتونی دقیق مشخص کنی که پردازشت چقدر زمان میبره بهتره یک عکس انیمیشن انتظار به کاربرت نشون بدی تا کار پردازش به پایان برسه

dr_jacky_2005
شنبه 01 آبان 1389, 15:55 عصر
من یک فرم لودینگ دارم که تووش پروگرس بار است.
یک فرم هم دارم که تووش درخت است و با تابعی پر از دیتا میشود.
اینگونه عمل کرده ام:
این رو نوشتم توو فرم که درخت تووشه که بتونم فرم لودینگ رو شو کنم:

LoadingForm frmp;

اینم توو لود فرمه که تووش درخته:

frmp = new LoadingForm();
frmp.Show();
this.Cursor = Cursors.WaitCursor;
backgroundWorker1.RunWorkerAsync();

اینم توو دوو ورک بکگرادنورکر:

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
int returnedRecordCount = 100;
for (int i = 1; i <= returnedRecordCount; i++)
{
if (this.backgroundWorker1.CancellationPending)
{
e.Cancel = true;
return;
}
this.backgroundWorker1.ReportProgress(i);

System.Threading.Thread.Sleep(20);
}
if (TrvCoding.InvokeRequired)
{

TrvCoding.Invoke(new MethodInvoker(delegate { TvfCoding.LoadTreeFullDate(); }));

//TvfCoding.LoadTreeFullDate();
}
}

اینم توو کامپلیت:

private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.Cursor = Cursors.Default;
frmp.Close();
//frmp.Hide();
}

اینم وقتی که فرمه که تووش درخته،دارخ بسته میشه:

private void HesabStateWorkForm_FormClosed(object sender, FormClosedEventArgs e)
{
if (this.backgroundWorker1.IsBusy) this.backgroundWorker1.CancelAsync();
}

private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (e.ProgressPercentage <= this.frmp.progressBar1.Maximum)
{
this.frmp.progressBar1.Value = e.ProgressPercentage;
}
}

اینم توو لود فرم لودینگ:

progressBar1.Value = 0;
for (int x = 0; x < 100; x++)
{
if (progressBar1.Value < progressBar1.Maximum)
{
//System.Threading.Thread.Sleep(10);
progressBar1.Value++;
}
}

اینا هم نکته ها:
دو تا پروپرتی توانایی کنسل کردن و گزارش دادن true است.
و
فرم لودینگ هم TopMost = true

سوالات:
الآن همه چی میاد،عالی...
ولی
اول لودینگ میاد،بعد پر شدن درخت شروع میشه!

من میخوام هم زمان باشن!


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

اگر مورد بالا نشد،میخوام که پروگرس بار بلوکی نباشد،marquee باشد.(style)