PDA

View Full Version : همزمان کردن لود شدن اطلاعات در گرید و نمایش روند پیشرفت ProgressBar



Fastdesign
چهارشنبه 09 اسفند 1391, 17:13 عصر
با سلام خدمت دوستان برنامه نویس

اطلاعات در فرم 1 در گرید خیلی کند برام نمایش داده میشه. برای اینکه بخوام جلوی این کندی را از دید کاربر بگیرم، یک فرم بعنوان اسپلش فرم قرار دادم . می خوام در اسپلش فرم نوار پیشرفت کار(ProgressBar) با لود شدن اطلاعات در گرید در فرم بعدی که فرم 1 باشه بصورت همزمان باشه.

یه کارهایی انجام دادم ولی دقیق جواب نگرفتم.

کدهای اسپلش فرم : ابتدا اسپلش فرم را بعنوان فرم اصلی قرار دادم.
سپس تعداد کل رکوردهای جدولم را بدست آوردم و در یک متغیر قرار دادم.
private void Form3_Load(object sender, EventArgs e)
{
i = ds.Tables["Phon"].Rows.Count;
timer1.Interval = 10;
progressBar1.Minimum = 1;
progressBar1.Maximum = i;
timer1.Enabled = true;
}


کدهای روی تایمر :
private void timer1_Tick(object sender, EventArgs e)
{
progressBar1.Value += 1;

if (progressBar1.Value == i)
{
timer1.Enabled = false;
Form1 f1 = new Form1();
f1.Show();
this.Hide();

}

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


امیدوارم منظورم را بهتون رسونده باشم.

با تشکر

Fastdesign
چهارشنبه 09 اسفند 1391, 20:52 عصر
دوستان کسی نیست راهنمایی کنه!:متفکر::متفکر::متفکر:

mustafa13
چهارشنبه 09 اسفند 1391, 21:29 عصر
سلام
شما چرا نمی ایید خود ProgressBar را در فرمی که گرید ویو هست قرار بدهید البته تا اتمام کارگرید ویو را غیرفعال باشه

Fastdesign
چهارشنبه 09 اسفند 1391, 22:04 عصر
سلام
شما چرا نمی ایید خود ProgressBar را در فرمی که گرید ویو هست قرار بدهید البته تا اتمام کارگرید ویو را غیرفعال باشه

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

چون اطلاعات درون بانک زیاد میشه، و وقتی می خوام لودش کنم، کمی تو دید کاربر ناخوشاینده یعنی دیر لود میشه ! مثلا اول فلان باتن لود میشه بعد گرید و الی آخر.
به همین خاطر اول می خوام یک اسپلش فرم قرار بدم که تا اون مدت زمان که نوار پیشرفت پر میشه اطلاعات در گرید در فرم بعد لود شده باشه!

با تشکر

Fastdesign
پنج شنبه 10 اسفند 1391, 07:29 صبح
اول اینکه تا اطلاعات کامل لود نشه داخل دیتاتیبل شما نمیتونید تعداد سطرها رو بدست بیارید(ds.Tables["Phon"].Rows.Count). خوب وقتی تعداد رو میخونید یعنی اطلاعات لود شده پس نیازی به نمایش اسپلش نیست.دوست عزیز مشکل من لود کردن اطلاعات در گرید است. چون وقتی اطلاعات در گرید لود میشه یک کم ظاهر فرم را به هم میریزه. به همین خاطر ابتدا تو اسپلش فرم اطلاعات را در دیتاتیبل لود کردم و سپس تعداد رکوردهای تیبل را با دستور (ds.Tables["Phon"].Rows.Count) بدست آوردم.



با تشکر

Fastdesign
پنج شنبه 10 اسفند 1391, 12:55 عصر
دوستان کسی نیست راهنمایی کنه!:متفکر::متفکر::متفکر:

samadblaj
پنج شنبه 10 اسفند 1391, 12:58 عصر
سلام بفرما ین کامل گویای عملت میشه ...

ali.bahrami
پنج شنبه 10 اسفند 1391, 13:04 عصر
سلام دوست عزیز خیلی راحت میتونی توسط background worker این کار را انجام بدی نمونه کد دوست خوبمون samadblaj را دانلود کن خیلی عالی انجام دادن. راحت متوجه میشی.

Fastdesign
پنج شنبه 10 اسفند 1391, 13:17 عصر
سلام بفرما ین کامل گویای عملت میشه ...

دوست عزیز اگه میشه روال کار را توضیح بدین! که از صفر باید چکار کنم


با تشکر