PDA

View Full Version : پیغام تصویریه 'لطفا منتظر بمانید' !



A_1397
یک شنبه 28 اردیبهشت 1393, 16:47 عصر
دوستان من میخام وقتی تو برنامم عملیاتی انجام میشه که زمانبر هست در طول انجام عملیات پیغام لطفا منتظر بمانید بده. مثلا وقتی داره جستجو می کنه یه عکس مثله این باز بشه و در پایان جستجو بسته بشه.
119182
من این عکسو داخل یه فرم گذاشتم و قبل از کدهای شروع عملیات گفتم این فرم باز بشه، حالا مشکل اینجاست که یا تصویر رو باز نمیکنه یا اگه بازکرد تصویر حرکت نمیکنه و ثابته و بالافاصله بعده پایان عملیات تصویر شروع به حرکت میکنه!!
مشکل از کجاست؟؟ اگه روش دیگه ای برای این کار دارین لطفا راهنماییم کنین :قلب:

Navid Asadi
یک شنبه 28 اردیبهشت 1393, 17:13 عصر
برای این کار شما باید از multithreading استفاده کنید به این صورت که کد های برنامه در یک thread جدا گانه اجرا بشن و جدا از فرم باشن
راچع بهش یه تاپیک کامل هستش میتونید در باره تریدینگ سرچ کنید.

boveiryghasem
دوشنبه 29 اردیبهشت 1393, 08:17 صبح
همون طوری که آقا نوید گفتن از multithreading استفاده کنی خیلی بهتره ولی اگه عجله داری و میبینی باید با multithreading درگیر بشی از SplashScreen هم میتونی استفاده کنی و رکب بزنی مثل کد زیر:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Num As Integer = 0
SplashScreen1.Show()

For i = 1 To 200
SplashScreen1.Refresh()
Num += 1
Next

SplashScreen1.Hide()
MessageBox.Show(Num.ToString())
End Sub

A_1397
دوشنبه 29 اردیبهشت 1393, 08:45 صبح
همون طوری که آقا نوید گفتن از multithreading استفاده کنی خیلی بهتره ولی اگه عجله داری و میبینی باید با multithreading درگیر بشی از SplashScreen هم میتونی استفاده کنی و رکب بزنی مثل کد زیر:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim Num As Integer = 0
SplashScreen1.Show()

For i = 1 To 200
SplashScreen1.Refresh()
Num += 1
Next

SplashScreen1.Hide()
MessageBox.Show(Num.ToString())
End Sub

ممنون دوست عزیز ولی این SplashScreen1چی هست؟؟؟

Naghibi
دوشنبه 29 اردیبهشت 1393, 13:04 عصر
من مشکلم رو با استفاده از کد زیر حل کردم، یعنی قبل از شروع عملیات مربوطه دستورات زیر رو نوشتم


FormPleaseWait.Show()
Application.DoEvents()

وقتی هم که دستورات تموم میشه
FormPleaseWait.Close()

boveiryghasem
دوشنبه 29 اردیبهشت 1393, 14:22 عصر
"Splash Screen تصویری است که در ابتدای برنامه نمایش داده میشود. این تصویر معمولا شامل نماد برنامه و نام و ورژن برنامه است."
از مسیر زیر میتونی Add کنی:

از قسمت solution explorer روی اسم برنامت راست کلیک میکنی و از قسمت Add گزینه New Item رو کلیک میکنی (کلید میانبر Ctrl+Shift+A) بعدش در پنجره باز شده از قسمت Installed Templates گزینه Windows Forms رو انتخاب میکنی و توی پنجره روبروش Splash Screen رو میتونی ببینی به برنامه اضافش میکنی و البته تنظیمات پیشفرض داره باید همه رو پاک کنی و یه PicBox بزاری جاشون .

swallow.pa
چهارشنبه 31 اردیبهشت 1393, 06:48 صبح
سرعت سيستم رو پايين نمياره اين قضيه

A_1397
چهارشنبه 31 اردیبهشت 1393, 10:24 صبح
"Splash Screen تصویری است که در ابتدای برنامه نمایش داده میشود. این تصویر معمولا شامل نماد برنامه و نام و ورژن برنامه است."
از مسیر زیر میتونی Add کنی:

از قسمت solution explorer روی اسم برنامت راست کلیک میکنی و از قسمت Add گزینه New Item رو کلیک میکنی (کلید میانبر Ctrl+Shift+A) بعدش در پنجره باز شده از قسمت Installed Templates گزینه Windows Forms رو انتخاب میکنی و توی پنجره روبروش Splash Screen رو میتونی ببینی به برنامه اضافش میکنی و البته تنظیمات پیشفرض داره باید همه رو پاک کنی و یه PicBox بزاری جاشون .

ممنون دوست عزیز از وقتی که گذاشتی. روش شمارو تست کردم جواب نداد عکسم همچنان ثابت بود و نمیچرخید. از thread استفاده کردم حل شد.:قلب:

A_1397
چهارشنبه 31 اردیبهشت 1393, 10:27 صبح
سرعت سيستم رو پايين نمياره اين قضيه

نه زیاد تاثیری نداره. گرچه تاثیر هم داشته باشه برای من تواین مورد مهمتر بود که کاربر متوجه بشه عملیات درحال انجامه و باید منتظر بمونه!!

boveiryghasem
چهارشنبه 31 اردیبهشت 1393, 16:06 عصر
خواهش میکنم دوست عزیز در مورد کار نکردن این مورد باید عکس رو رفرش کنی تا جواب بده ولی همون طور که گفتم اگه از thread استفاده کنی که دیگه کار اصولی میشه

موفق باشید.