PDA

View Full Version : سوال: نمایش پیغام انتظار در زمان لود اطلاعات



samet_king
شنبه 08 دی 1397, 22:54 عصر
با سلام و خسته نباشید خدمت اساتید گرانقدر


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

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





private void buttonShow_Click(object sender, EventArgs e)



{


salonTableAdapter.FillByActive(dataSet1.Salon); // Fil kardan

}

User_Soual
شنبه 08 دی 1397, 23:00 عصر
سلام کد نویسی کن که برای مثلا 10ثانیه label1.Text برابر بشه با Please waitبعد از ده ثانیه تکستش تغییر کنه

با کلاس system.thearding.tread.sleepاین کار بکنید از املا صحیحش مطمئنا نیستم ولی همینه

NasimBamdad
شنبه 08 دی 1397, 23:52 عصر
از Background worker استفاده کنید

samet_king
یک شنبه 09 دی 1397, 06:47 صبح
سلام کد نویسی کن که برای مثلا 10ثانیه label1.Text برابر بشه با Please waitبعد از ده ثانیه تکستش تغییر کنه

با کلاس system.thearding.tread.sleepاین کار بکنید از املا صحیحش مطمئنا نیستم ولی همینه
از تایم نمیشه استفاده کرد چون همیشه ثابت نیست . بعضی وقتها رکورد ها زیاد هستن تا 120 ثانیه طول میکشه و بعضی وقتها رکورد ها کم هستن 4 ثانیه طول میکشه .


از Background worker استفاده کنید
میشه بیشتر توضیح بدید

رامین مرادی
یک شنبه 09 دی 1397, 09:13 صبح
دوست خوبم ابتدا یه فرم ایجاد کن یه دونه هم لیبل بزار روش و روش بنویس لطفا صبر کنید. و کد های زیر رو بزارید داخلش


private static Thread _LoadingScreenThread;
private static Wait _ls;
private static bool _shown = false;
private static Form _parent;
public static void ShowLoadingScreen(Form parent)
{

_parent = parent;
if (_LoadingScreenThread == null)
{
_LoadingScreenThread = new Thread(new ThreadStart(DoShowLoadingScreen));
_LoadingScreenThread.SetApartmentState(ApartmentSt ate.STA);
_LoadingScreenThread.IsBackground = true;
_LoadingScreenThread.Start();
}
}
public static void CloseLoadingScreen()
{
System.Threading.Thread.Sleep(250);
if (_ls != null && _ls.InvokeRequired)
{
_ls.Invoke(new MethodInvoker(CloseLoadingScreen));
}
else
{
if (_shown)
{
_shown = false;
Application.ExitThread();
}
if (_LoadingScreenThread != null) _LoadingScreenThread.Interrupt();
try
{
_ls.Close();
_ls.Dispose();
}
catch
{}
_LoadingScreenThread = null;
}

}

private static void DoShowLoadingScreen()
{
_ls = new Wait();
//_ls.Wait_Progress.IsRunning = true;
_ls.ShowDialog();
}
private void Wait_Load(object sender, EventArgs e)
{
this.Activate();


}
public static void Thread1Job()
{
for (int counter = 0; counter < 50; counter++)
{
MessageBox.Show("");
}
}





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


Wait.ShowLoadingScreen(this);



و بعد اینکه دستورتون کامل شد این کد رو بزارید



Wait.CloseLoadingScreen();



منبع این کد هم همین سایته که دوستان زحمتشو کشیدن به منم یاد دادن.(لینکش یادم نیست تو تایپیک هام بگردید پیدا میکنید.) منم مدتها استفاده میکنم ازش. دستشونم درد نکنه.:لبخندساده:

NasimBamdad
دوشنبه 10 دی 1397, 05:22 صبح
از تایم نمیشه استفاده کرد چون همیشه ثابت نیست . بعضی وقتها رکورد ها زیاد هستن تا 120 ثانیه طول میکشه و بعضی وقتها رکورد ها کم هستن 4 ثانیه طول میکشه .


میشه بیشتر توضیح بدید

https://docs.microsoft.com/en-us/dotnet/api/system.componentmodel.backgroundworker?view=netfra mework-4.7.2

https://www.dotnetperls.com/backgroundworker

samet_king
دوشنبه 17 دی 1397, 06:46 صبح
دوست خوبم ابتدا یه فرم ایجاد کن یه دونه هم لیبل بزار روش و روش بنویس لطفا صبر کنید. و کد های زیر رو بزارید داخلش



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


Wait.ShowLoadingScreen(this);



و بعد اینکه دستورتون کامل شد این کد رو بزارید



Wait.CloseLoadingScreen();



منبع این کد هم همین سایته که دوستان زحمتشو کشیدن به منم یاد دادن.(لینکش یادم نیست تو تایپیک هام بگردید پیدا میکنید.) منم مدتها استفاده میکنم ازش. دستشونم درد نکنه.:لبخندساده:



149561

همون کاری که گفتین رو انجام دادم ولی ارور داد !

رامین مرادی
دوشنبه 17 دی 1397, 08:21 صبح
اینو تو قسمت یوزینگ ها بنویسید
using System.Threading;

داخل پارانتز که فاصله افتاده اونم درست کنید.