سلام
كسي ميدونه با چه دستوري ميشه برنامه اي رو كه با وي بي دات نت نوشتيم
ري استارت كنم
مثلا يك دگمه بزاريم كه وقتي روش كليك كرديم برنامه بطور كامل end بشود
و دوباره اجرا بشه؟
ممنون
سلام خوبي؟ چه خبر؟
ميگم اين كدي كه دادي خيلي خوب بود
جواب داد
تشكر ولي به كار من نيومد!
حالا چرا بهت ميگم؟
خوب به كد زير نگاه كن.
اين كد رو براي دكمه خروج توي برنامه نوشتم
كارش اينه كه مقدار يك چك باكس رو توي يك فايل xml تنظيمات برنامه ذخيره ميكنه (از اجل اجل .. ياد گرفتم)
با اين كد هم مشكلي پيش نمياد
کد php:
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
'save setting
My.Settings.chkToolBar = mnuToolBar.Checked
My.Settings.Save()
'
End
End Sub
اما اومديمو كاربر روي دكمه ضربدر فرم كليك كرد درنتيجه بايد كدي نوشت كه اون موقع هم تنظيمات برنامه ذخيره بشه
من كد زير رو نوشتم
بگو خب!
کد php:
Private Sub frmMain_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
btnExit_Click(Nothing, Nothing)
End Sub
خب نداره ديگه اگه اين كد نوشته بشود (همين خط بالايي)
دكمه رفرش ديگه كار نميكنه اگر هم ننويسم كار ميكنه
در ضمن حتما بايد دكمه ضربدر باشه
خب حالا شما فكري داري براي مشكل من
با تشكر
سلام.
توضیحاتت خیلی مبهمه.
شما که نوشتی end. این دستور برنامه رو میبنده. ری استارت نمیکنه.
اگه میخوای یه دکمه برای ریست و یه دکمه برای خروج داشته باشی مشکلی نیست. یه تابع بنویس و دستورات سیو اطلاعات برنامه رو داخلش بنویس. رو دکمه خروج یا ریست کلیک شد اول اون تابع رو صدا بزن بعد برنامه رو end یا Application.Restart() کن. در FormClosing هم اون تابع سیو اطلاعات رو صدا کن.
سلام
دوست من احتمالا شما بدرستي متوجه عرايض بنده نشديد
يك دكمه براي رياستارت برنامه موجوده كه كدش رو هم بالا دوستان گفتن
بهر حال مشكل حل شد.(البته با توجه به سخنان آقا پيام)
من بجاي اينكه كد ذخيره سازي رو توي رويداد كليك دكمه خروج بنويسم توي يك تابع جدا نوشتم و بعد اونو توي دكمه خروج و همچنين توي رويداد فرم كلوزينگ صدا زدم
در ضميمه يك برنامه نوشتم كه بدونين مشكل چي بود و چگونه حل شد
در اين برنامه اگه تيك چك باكس رو برداريد و بعد روي دكمه خروج بزنيد وقتي برنامه رو باز كردي ميبينيد كه تيك چك باكس مثل همون حالتي است كه قبلا شما گذاشته بوديد (بجاي كار با رجيستري اين روش خيلي خوب و آسونه)
تشــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــــكر.
باي باي
(۳۰-اسفند-۱۳۸۷, ۰۴:۵۰:۵۶)sav68 نوشته است: [ -> ]من بجاي اينكه كد ذخيره سازي رو توي رويداد كليك دكمه خروج بنويسم توي يك تابع جدا نوشتم و بعد اونو توي دكمه خروج و همچنين توي رويداد فرم كلوزينگ صدا زدم
لازم نبود یع تابع بنویسی!!! فقط کافی بود دستورات ذخیره سازی رو توی Form_Closing می نوشتی، توی دکمه هم می نوشتی Me.Close
سلام
حرفتون متين اما...
Me.Close فرم رو ميبنده در حالي كه من با دستور end برنامه رو ميبندم
ولي در كل روش شما خيلي بهتر فقط جاي Me.Close بايد end رو بنويسم
از دوستان بخاطر جواب دادن تشكر ميكنم
سلام.
ساو جان me.close در واقع بستن استاندارد برنامه هست. end مانند end task کردن برنامه میمونه. در me.close دستورات form_Closing هم اجرا میشه. ولی در end نمیشه. منظور Far عزیز این بود شما هر کاری میخوای قبل بسته شدن برنامه انجام بدی بذار تو form_closing. حالا چه برنامه رو restart کنی چه me.close کنی اون دستورات اجرا میشن.
سلام آقا پيمان
ميتونين منو محمود جان صدا بزنيد
راستش شايد اينو
نقل قول: end مانند end task کردن برنامه میمونه.
قبول داشته باشم
ولي اين رو
نقل قول: در me.close دستورات form_Closing هم اجرا میشه. ولی در end نمیشه.
قبول ندارم و بهمين دليل اون بالايي رو هم قبول ندارم در واقع end يكجور شات داون كردن است
زيرا من از end استفاده كردم و دستورات form_Closing اجرا شده
و اصلا از دستور me.close ميشه فهميد كه فقط فرم جاري را ميبندد و مثلا اگه 2 تا فرم باشن فقط يكيش بسته ميشه زيرا me بمعناي همين كلاس است و در نتيجه حافظه پر از ديتاست ها و ديگر ارتباطات مي ماند(آنهايي كه از فرم هاي ديگر باز هستند)
شايد من اشتباه ميكنم.
سلام.
نه درست میگی. من فرض رو بر این گذاشتم که فقط یه فرم داشته باشی. اگه بیش از 1 فرم باز باشه فقط فرم جاری بسته میشه و برنامه همچنان باز میمونه.