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

كود ومشكلة في تحميل الفورم مرة واحدة

مغلق
بدأه محمد سامر أبو سلو في 10 سبتمبر 2005 · 7 رد · 740 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي نافذة حول البرنامج اسمها في البرنامج AboutProgram واستخدمت متغير في الفورم الرئيسية للبرنامج كالتالي للإعلان عنها

    Private AboutPrg As AboutProgram

وفي حدث القائمة الذي سيقوم بفتح نافذة حول البرنامج استخدمت الكود التالي وذلك حتى أضمن أنها لاتفتح سوى مرة واحدة في كل مرة أي أنه لايمكن أن تفتح نافذتين حول البرنامج في نفس الوقت

        Try
            If IsNothing(AboutPrg) = False Then
                If AboutPrg.IsDisposed Then
                    AboutPrg = New AboutProgram
                    AboutPrg.Show()
                End If
            Else
                AboutPrg = New AboutProgram
                AboutPrg.Show()
            End If
        Catch ex As Exception
            ex = Nothing
        End Try

الكود يعمل بطريقة رائعة وبدون أي مشاكل لـ 99% من الأوقات

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

فهل يستطيع أحدكم إرشادي إلى معرفة السبب في هذه المشكلة مشكورا

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#3

شكرا لك أخ crazy-man

سأقوم بدراسة وتجربة الكود في الرابط المذكور

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#4

بعد تجربة الطريقتين توصلت إلى حل أعتقد أنه حل المشكلة ولكن سأراقب البرنامج لبضعة أيام حتى أتأكد من النتيجة

وكان الاسلوب كالتالي:

في الفورم AboutProgram أعلنت عن متغير كالتالي

friend shared Count as short

وفي sub main

count +=1
if count > 1 then
    me.dispose()
end if

وفي الـ override لـ disopse الخاص بالفورم استخدمت الكود

count -= 1

و أستدعي الفورم بالطريقة الاعتيادية

dim ab as new AbouProgram
if not ab.disposed() then
      ab.show()
end if

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

ما رأيك أخ crazy-man

تم تعديل هذه المشاركة بواسطة samerselo في 11 سبتمبر 2005 في 16:26

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

#5

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

ربما لم أفهم السؤال جيداً و لكن ما فائدة الوظيفة ShowDialog إذاً

حيث أن الطريقة القياسية للـ Form About هي عند ظهورها لا يمكنك التعامل مع التطبيق أو البرنامج إلا بعد إغلاقها

و الوظيفة ShowDialog تؤدي هذه العملية بنجاح

Dim Frm As New FrmAbout
Frm.ShowDialog

أفيدونا أفادكم الله

السلام عليكم...

#6

السلام عليكم

اغلب البرامج يا اخى لا بد من فتح اكتر من شاشة فى نفس الوقت

وبلنسبة لى الوظيفة ShowDialog لن تستطيع التعامل مع اكتر من شاشة فى نفس الوقت

planet.rar

{وَاتَّقُواْ يَوْمًا تُرْجَعُونَ فِيهِ إِلَى اللّهِ ثُمَّ تُوَفَّى كُلُّ نَفْسٍ مَّا كَسَبَتْ وَهُمْ لاَ يُظْلَمُونَ} (281) سورة البقرة

br17.gif

برنامج الإتصلات الإدارية والارشيف الالكتروني

برنامج الخبير لنقاط البيع المباشرة

#7

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

نعم أخي waleedhm أعرف ذلك و بارك الله فيك

و لكن كما قلت طريقة عرض الـ Form About تكون بمنع التعامل مع التطبيق إلا بعد إغلاق الـForm About

و هذا ما تتبعه شركة مايكروسوفت و كل الشركات تقريباً.

و حسب ما طلب من السؤال تستطيع الوظيفة ShowDialog أن تقوم به.

#8

الكود في مشاركتي الأولى و الكود الذي في الموضوع الذي أشار إليه الأخ crazy-man و الكود الذي وضعته لا حقا كلها تؤدي نفس المهمة وذلك بمنع إظهار النافذة مرة واحدة ولكن المشكلة المطروحة هنا كما في المشاركة الأصلية

samerselo كتب:
الكود يعمل بطريقة رائعة وبدون أي مشاكل لـ 99% من الأوقات

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

فهل يستطيع أحدكم إرشادي إلى معرفة السبب في هذه المشكلة مشكورا

وبالنبة لطرح الأخ بوجلاوي حول Frm.ShowDialog كما أضاف الأخ waleedhm

اقتباس
اغلب البرامج يا اخى لا بد من فتح اكتر من شاشة فى نفس الوقت

وبلنسبة لى الوظيفة ShowDialog لن تستطيع التعامل مع اكتر من شاشة فى نفس الوقت

بالإضافة إلى نقطة أخرى لاحظتها وهي أن برنامجي يستخدم notifyIcon وهنا لا يمكن استخدام الإجراء showdialog كون النافذة الرئيسية تكون مخفية عادة مما يسبب runtime error لايمكن تفاديه حسب تجاربي

تم تعديل هذه المشاركة بواسطة samerselo في 12 سبتمبر 2005 في 15:38

عن عائشة رضي الله عنها أن النبي صلى الله عليه وسلم قال: إن الله يحب إذا عمل أحدكم عملا أن يتقنه

نعيب زماننا والعيب فينا ... وما لزماننا عيب سوانا

ونهجو ذا الزمان بغير ذنب ... ولو نطق الزمان لنا هجانا

محمد سامر أبو سلو

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

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