الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

استدعاء فورم بعد الضغط على زر الإغلاق

مغلق
بدأه the_bleiver في 26 أبريل 2006 · 5 رد · 1,101 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

تفادي خطأ form1.show ,, كيف ؟؟؟

عملت برنامج فيه فورمين واحد منهم عليه زر عند الضغط عليه بيظهر لي الثاني ,,

والرجوع للأول من خلال حدث معين في يحدث في الثاني ,,

المهم ,, عندما أكون بالفورم الثاني ,, واضغط على زر الإغلاق برجع للأول ,,

لكن عند الضغط على الزر مرة أخرى بيطلع لي خطأ ,,

كيف يمكن معالجة هذا الخطأ ,,

هل ممكن أعمل Load للفورم الثاني من الأول ,,

هل ممكن عند الضغط على زر الإغلاق للفورم الثاني اتفادى عملية Unload ,,,

:( :( :(

(ومَنْ يَتَّقِ اللهَ يَجْعَلْ لَهُ مَخْرَجاً وَيَرْزُقُهُ مِنْ حَيْثُ لَاْ يَحْتَسِبْ وَمَنْ يَتَوَكَّلْ عَلَى اللهِ فَهُوَ حَسْبُهُ)

فرحناز سجّاد حسين فاضل - مهندسة كمبيوتر

ela-rasool-allah.gif

#3

طيب انت اكتب الكود تبعك

اتوقع انك بتكتب form1.close

<span style='color:green'>سؤل ابن عباس عن علمه كيف جمعه فقال :( أوتيت لسانا سؤولا وقلبا عقولا)</span>

#4

السلام عليكم

أعتقد أن مشكلتكِ أختي في form1.show

خليها Form1.ShowDialog()

ما أدري هل ها هو المقصود ؟؟

{ وقل رب زدني علماً }

#5

إخواني ,, شكرا لكم ,,,

أقصد من المشكلة ,, أنه لدي فورمين ,, Form1 و Form2 ,,,

في فورم1 عرفت كائن من نوع فورم2

dim f2 as new form2

لدي زر btn1 في فورم1 فيه الكود

f2.ShowDailog(Me)

وفي فورم2 لدي صندوق نص يتم إدخال بيانات فيه وزر btn2 ,,,

إذا قام المستخدم بإدخال الكلمة صحيحة يضغط على الزر فيرجعه إلى الفورم1

الكود في btn2

If txt1.Text = "arabteam2000" then
valid1 = "ok"
me.hide
End If

طبعا valid1 متغير معرف في موديول ,, وهناك زر آخر cancel ,, يعمل على إخفاء الفورم2 دون إسناد أي قيمة للمتغير valid1

حسناً المشكلة عند تشغيل البرنامج ,, نكون في فورم1 نضغط على الزر يظهر الفورم2 ,, وعند العمل على الضغط على أحد الزرين لا مشكلة ,, ولكن عند الضغط على زر الإغلاق للفورم2 ,, نعود لفورم1 وعند الضغط على الزر في فورم1 تطلع رسالة الخطأ ,,,

أريد حلاً لهذه المشكلة ,, عند الضغط على زر الإغلاق في فورم2 لايحصل له Unload ولا ينتهي من الذاكرة ,, أو أننا نستطيع عند استدعائه مرة أخرى أن نعمل له Loading من جديد ,,

اتمنى أني أوضحت ماأريد ,,

تم تعديل هذه المشاركة بواسطة the_bleiver في 27 أبريل 2006 في 18:24

(ومَنْ يَتَّقِ اللهَ يَجْعَلْ لَهُ مَخْرَجاً وَيَرْزُقُهُ مِنْ حَيْثُ لَاْ يَحْتَسِبْ وَمَنْ يَتَوَكَّلْ عَلَى اللهِ فَهُوَ حَسْبُهُ)

فرحناز سجّاد حسين فاضل - مهندسة كمبيوتر

ela-rasool-allah.gif

#6

السلام عليكم ورحمة الله وبركاته ,,

إخوتي الكرام في هذا المنتدى ,,

هداني الله أخيراً إلى وصلة لتحميل كتاب الذي كنت طالما أبحث عنه وهو

Sybex Mastering Visual basic .NET

وبهذا سأحاول أن أقلل إزعاجي وأسئلتي ,, وبعون الله أجد مواضيع مفيدة أستطيع طرحها بين ايديكم ,,

توصلت إلى الحلول التي طلبت في هذه المشاركة ,,

الحل الأول هو منع الفورم من الإغلاق ,, وهذا يفيد المستخدم قليل الانتباه عندما يغلق فورم ويريد العودة إليه ولكن يكتشف أنه قد أضاع بياناته ,,

من بين الطرق هو إظهار رسالة تأكيد إغلاق ,,

ولكن هذه إذا استخدمت مع كل واجهة في تطبيق يحتوي عدد من الواجهات سيكون الأمر غير مريح وتخصص للنافذة الرئيسية ,,

أما النوافذ الأخرى فنقوم بتعطيل عملية الإغلاق بالكود التالي :

نفرض أن اسم الفورم هو form2

Private Sub form2_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
        e.Cancel = True
        Me.Hide()
End Sub

وهكذا بدل الإغلاق يجب يقوم الفورم بالاختباء لحين استدعاؤه للمرة التالية ,, رغم وجود أزرار مثل ,, Back to Main ,, و cancel ,, و exit ,, إلى أن المستخدم يجب إغلاق الفورم بالطريقة غير الاعتيادية ,, عدم الضغط على الزر المتاح بل على زر الإغلاق القابع في الركن العلوي من الواجهة ,, وإذا لم يوجد كود لتلافي الأضرار والأخطاء يحدث مالا يحمد عقباه ويتصف البرنامج بالضعف ,,

الحل التالي هو إنشاء نسخة جديدة من الفورم2 New Instance ,, مع احتمال وجود نسخة سابقة مختبأة ,, لأننا لانستطيع أن نتنبأ ماسيفعله المستخدم في كل مرة ,, لا نستطيع الجزم أنه في كل مرة سيغلق الفورم ولن يلجأ إلى إخفاؤه ,, ولتلافي خطأ تكوين عدة نسخ من الفورم ,, وتحميل ذاكرة فوق طاقتها ,, نستخدم جملة حاول Try لتجنب أي أخطاء ,,

Windows Form designer generated code
'عرف الفورم2 هنا
Dim f2 As New Form2

'ثم في كود زر استدعاء الفورم وليكن اسمه btn1
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
        Try
            f2.ShowDialog(Me)
        Catch
            Dim f2 As New Form2
            f2.ShowDialog(Me)
        End Try
End Sub

مثال توضيحي مرفق

وبالله التوفيق ,,, :rolleyes:

FormShowTest.rar

(ومَنْ يَتَّقِ اللهَ يَجْعَلْ لَهُ مَخْرَجاً وَيَرْزُقُهُ مِنْ حَيْثُ لَاْ يَحْتَسِبْ وَمَنْ يَتَوَكَّلْ عَلَى اللهِ فَهُوَ حَسْبُهُ)

فرحناز سجّاد حسين فاضل - مهندسة كمبيوتر

ela-rasool-allah.gif

هذا الموضوع مغلق.

مواضيع مشابهة