تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
درس- كيفية تفادي خطأ استدعاء واجهة بعد إغلاقها
#1
كاتب الموضوع : المؤمنة

درس: كيفية تفادي خطأ استدعاء واجهة بعد إغلاقها form1.show .... تقييمه: للمبتدئين
إعداد: م/ فرحناز سجّاد حسين فاضل - مهندسة كمبيوتر ...
النسخة: 2003
_______________________________________
هي من المشاكل التي واجهتني في بداية تعاملي مع الVB.NET .. تتلخص المشكلة في استدعاء فورم تم إلغاؤه من الذاكرة بغلقه بواسطة النقر على زر الإغلاق الموجود في أعلى اليمين باللون الأحمر وفيه × بيضاء ... سأبدأ بشرح المشكلة مع تقديم الحل لها ...

لدينا في المشروع واجهتين ... لتكن form1 و form2 .. وفي كلاهما زر Button1 و Button1 أيضاً .. كلا الزرين يقومان بإعادة الضاغط على أحدهما إلى الواجهة الآخر ... ووضعنا الكود التالي في كل زر ...


كود :
[b]form2.show[/b]
في الزر الموجود في الفورم1 .. وقد تم تعريف فورم1 مسبقاً كالتالي ...


كود :
[b]Dim form2 as new form2[/b]
وأما بالنسبة للزر الموجود في فورم2 ... فكان الكود


كود :
[b]form1.show[/b]
حيث تمّ تعريفه كالتالي ...


كود :
[b]Dim form1 as new form1[/b]
أو بدلا من show استخدمنا


كود :
[b]form2.showdialog(Me)[/b]
وعند التشغيل قام المستخدم بالضغط على الزر في الفورم1 وظهر الفورم2 .. وقام المستخدم بالضغط على زر الإغلاق .. فرجع إلى الفورم1 ثم ضغط على الزر من جديد ولكن بسبب الكود القاصر السابق ظهر له رسالة خطأ .. هذا الخطأ ناتج عن انتهاء الفورم من الذاكرة فلا يمكن إظهار شيء حصل له UnLoad .. فكان الحل الأولي بوضع السطر التالي في حدث Closing لكل فورم ...


كود :
[b]Private Sub form2_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing[/b]
[b]e.Cancel = True[/b]
[b]Me.Hide()[/b]
[b]End Sub[/b]
ولكن بهذه الطريقة صحيح أننا حلينا المشكلة الأولى ولكن ظهرت مشكلة جديدة .. لاحظ العمل التالي من المستخدم ...
شغل البرنامج .. ضغط على الزر في فورم1 ظهر فورم2 ضغط على الزر ظهرت نسخة جديدة للفورم1 ضغط على الزر ظهرت نسخة جديدة للفورم2 .. وهكذا دواليك إلا أن تمتلئ الذاكرة ويتوقف الجهاز عن المتابعة .. ويعمل إعادة تشغيل !!!

فما الحل ؟ الحل هو اللجوء لجملة Try .. Catch .. End Try وهو كالتالي ..

---- الفورم الأول ----


كود :
Windows Form designer generated code

كود :
[b]'عرف الفورم2 هنا[/b]
[b]Dim form2 As New Form2[/b]
[b]'ثم في كود زر استدعاء الفورم وليكن اسمه button1[/b]
[b]Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click[/b]
[b]Try[/b]
[b]form2.ShowDialog(Me)[/b]
[b]Catch[/b]
[b]Dim form2 As New Form2[/b]
[b]form2.ShowDialog(Me)[/b]
[b]End Try[/b]
[b]End Sub[/b]
---- الفورم الثاني ----


كود :
[b]'عرف الفورم1 هنا[/b]
[b]Dim form1 As New Form1[/b]
[b]'ثم في كود زر استدعاء الفورم وليكن اسمه button1[/b]
[b]Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click[/b]
[b]Try[/b]
[b]form1.ShowDialog(Me)[/b]
[b]Catch[/b]
[b]Dim form1 As New Form1[/b]
[b]form1.ShowDialog(Me)[/b]
[b]End Try[/b]
[b]End Sub[/b]


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

End Sub

اتمنى أن يكون الشرح واضحاً ....


أختكم المؤمنة ...
}}}
تم الشكر بواسطة: zinom


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سلسلة تعليمية] شرح تفصيلي وكامل عن كيفية الاتصال بسيكوال وعمل اتاش برمجي وجلب اسماء السيرفرات ابو انس 3 3,620 25-02-22, 12:44 AM
آخر رد: atefkhalf2004
Photo كيفية اطهار جدول داخل الأخر alsouf 3 4,470 21-11-20, 09:15 AM
آخر رد: Anas Mahmoud
  لفهم كيفية الربط الذي يتم بين الجداول viv 4 4,991 03-10-20, 05:34 PM
آخر رد: Arfat007
  [VB.NET] كيفية استخدام اداوات ديف اكسبريس devexpressلادخال السجلات الى قاعدة بيانات نوع اكسس 13adam123 0 2,579 29-03-20, 12:50 PM
آخر رد: 13adam123
Star [مقال] كيفية تحويل اسعار العملات بإستخدام Yahoo Exchange Rates Web Service Programmation 9 8,956 22-02-20, 12:58 PM
آخر رد: دمعة المقهور
Exclamation كيفية تجاوز ظهور الخطا في Global.WindowsApplication1.My.Resources الرائد 0 2,549 13-08-19, 11:40 PM
آخر رد: الرائد
  [درس فيديو] كيفية استخدام الجملة الشرطية if alims 1 3,333 22-07-19, 06:38 AM
آخر رد: سعود
  كيفية عمل برنامج للأذان + قاعدة بيانات لـ 252 دولة و 9512 مدينة ! : مبرمج أوتار 4 23,517 21-01-19, 03:43 PM
آخر رد: elgokr
  درس: كيفية حساب عدد الأسطر في نص المبرمج الطموح vb6 5 7,393 26-12-17, 09:46 PM
آخر رد: abo.alaa315
  كيفية قراءة ملف باستخدام IntPtr الخاص بالملف silverlight 3 3,630 24-12-16, 03:13 AM
آخر رد: silverlight

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم