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

كائن من فورم

بدأه star5 في 3 سبتمبر 2008 · 7 رد · 823 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

برنامجي يحوي عدة

forms

اتنقل بينها بأزرار باستخدام الكود التالي

Form2 frm = new Form2();

frm.ShowDialog(this);

frm.Dispose();

الذي أضعه في حدث الضغط على الزر

لم أجد سوى هذه الطريقة التي سببت لي مشكلة بعد عدة مرات من تشغيل البرنامج حيث لم يعد يعمل و اظهر لي النظام مشكلة في الذاكرة الافتراضية لجهازي

المشكلة ظهرت عند تنفيذ هذا السطر

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

Form2 frm = new Form2();

و شكرا لكم

#2

ولماذا

frm.ShowDialoge(this); // why you don't use frm.show

ولما تضع

frm.Dispose();

اشتغل كده مثلا

Form2 frm =new Form2();

frm.Show(); // or frm.ShowDialoge();

#3

شكرا على الرد أخي Prof.Mendl

المشكلة ليست في

frm.Show(); // or frm.ShowDialoge();

لأن الفرق بينهما طفيف ..المشكلة في عملية new حيث أنها تتم في كل مرة يتم الضغط على الزر للانتقال للفورم الاخر

#4

فقط ضع هذا السطر

Form2 frm = new Form2();

قبل Public form1 بدلا من وضعها في حدث الضغط على الزر

#5

ما يقصده الاخ اسلام هو انشاء كائن جديد عام ( متغير public) اي على مستوى الكلاس وبالتالي تستطيع استدعاءه من اي مكان

اعتذر لم اكن افهم مشكلتك بالضبط وبناءً على ردك الاخير فاجابته هي رد الاخ اسلام

#6

شكرا على جهودكم

Chaos is rejecting all you have learned, chaos is being YOURSELF
 

#7

عليك ان تضع في form2 متغير من نوع bool و ليكن اسمه opened و اجعله public

و في حدث form2_load تعطي لهذا المتغير قيمة true

ثم داخل الفورم الأخرى تكتب الاجراء التالي:

form2 frm=new form2();

if(frm.opened==true)

{

frm.focus();

}

else

{

frm.show()

}

هذا الطريقة ستمنع حدوث run-time error نتيجة فتح الفورم أكثر من مرة فاذا كانت الفورم مفتوحة فان التركيز سيذهب اليها اما اذا لم تكن مفتوحة فانها ستظهر

#8

ملحوظة :

في حث form2_closed اجعل قيمة opened تساوي false

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