تقييم الموضوع :
  • 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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
Star [مقال] كيفية تحويل اسعار العملات بإستخدام Yahoo Exchange Rates Web Service Programmation 8 2,461 26-08-16, 10:21 AM
آخر رد: tryold
  كيفية تغيير خلفية محرر الكود في Visual Studio 2010 إلى صورة أبو عمر 0 565 06-09-15, 06:44 PM
آخر رد: أبو عمر
  درس: كيفية حساب عدد الأسطر في نص المبرمج الطموح vb6 4 1,616 04-08-15, 12:45 AM
آخر رد: العواد الصغير
  [VB.NET] كيفية انشاء قاعدة بيانات برمجيا VB.net (صوت وصورة) أحمد النجار 0 722 18-01-15, 06:59 AM
آخر رد: أحمد النجار
  كيفية عمل setup للبرنامج المعمول بالفيجول بيسك2008 يدعم العربيه hosney 3 849 31-12-14, 10:55 AM
آخر رد: hosney
  [مقال] كيفية عمل قالب لفورم learning.net 12 3,556 01-01-14, 10:33 PM
آخر رد: adosql
  كيفية عمل برنامج للأذان + قاعدة بيانات لـ 252 دولة و 9512 مدينة ! : مبرمج أوتار 1 3,609 15-07-13, 04:36 PM
آخر رد: مبرمج بلا حدود
  شرح مصور: كيفية رفع برامجك على موقع Appharbor sooriaty03 7 1,643 03-07-13, 01:36 PM
آخر رد: مبرمج بلا حدود
  كيفية عمل mdi حيث يظهر مرة واحدة egypure 2 812 18-12-12, 04:07 AM
آخر رد: egypure
  من المنتدى القديم - كيفية عمل Setup لبرامجك لتعمل على جميع الأجهزة RaggiTech 0 1,087 14-10-12, 02:38 PM
آخر رد: RaggiTech

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


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