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

حول الفورم

مغلق
بدأه electronics في 28 نوفمبر 2006 · 5 رد · 671 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

إخواني لدي بعض الأسئلة أرجو ممن يستطيع الإجابة أن يجيبني عليها

لنفرض أن لدي برنامج يحتوي على

2 forms ( form1 & form2)

كل فورم يحتوي على زر للانتقال إلى الفورم الآخر وتسكير الفورم الحالي فتم كتابة الكود التالي

// In Form1 Button 1
Form2 ff = new Form2();
ff.show();
this.Hide();


// In Form 2
Form1 fff = new Form1();
Fff.Show();
this.Hide();

الاستفسارات هي

هل أستطيع كتابة كود بحيث لا أقوم بإخفاء الفورم الأول بل يإغلاقه

حيث أني لو استخدمت الكود

this.Close();

في فورم 1 فسوف يتم إغلاق البرنامج

الاستفسار الآخر

في فورم 1 الكود

this.Hide();

يعني إخفاء الفورم وبالتالي لا بد من طريقة لإعادة إظهاره غير ما استخدم في فورم2 أي أنه على ما أعتقد لا داعي لكتابة هذا الكود

Form1 fff = new Form1();

fff.Show();

فهل توجد طريقة أستطيع من خلالها معرفة اسم الفورم الأول أي ما هو اسم

Current Form1 Object

#2

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

بالنسبه للاستفسار الأول, فلا ينبغي عليك أن تغلق الـ Form الرئيسيه للبرنامج فاكتفي بالاخفاء اذا كان برنامجك يتطلب ذلك.

بالنسبه للاستفسار الثاني فهو هام, فلا ينبغي عليك في الـ Form2 كتابة كود يقوم بانشاء Object كامل جديد من الـ Form1, لأن Form1 أصلا موجوده في الذاكره ولم يتم اغلاقها فهي فقط مخفيه. على كل حال يمكنك عمل Property في Form2 تضع فيها عنوان الـ Object الحالي للـ Form1 حتى تستطيع وأنت في Form2 عمل به ما تريد ( اظهاره مثلا ).

في Form2 اكتب Property لذلك :

Form1 currentForm1;

public Form1 CurrentForm1
{
get{return this.currentForm1;}
set{this.currentForm1 = value;}
}

وعندما تستدعي Form2 من Form1 استخدم تلك الـ Property :

Form2 myForm2 = new Form2();
myForm2.CurrentForm1 = this;
myForm2.Show();
this.Hide();

وعندما تكون في Form2 وتود اظهار Form1 :

CurrentForm1.Show();
this.Close();

تم تعديل هذه المشاركة بواسطة معتز شمس في 30 نوفمبر 2006 في 12:18

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

#3

أشكرك أخي معتز

ولكن عندي استفسار حول ردك

عند كابة

Form1 currentForm1;

هنا تم إنشاء object جديد من الـ Class Form1

ولكن ماذا عن الفورم الأصلي والأساسي

يعني ما هو اسم ال object الذي أنشأه visual studio عن ال class Form1

وهل أستطيع مثلا من خلال معرفة هذا الاسم أن اصل إلى العناصر الموجودة في هذه الفورم من خلال فورم غيرها

بمعنى آخر

لنفرض أن اسم الفورم الأساسية التي أنشأها visual studio هو f1

هل استطيع عندها أن اكتب الكود التالي في فورم 2

f1.textBox1.text = "How r u";

ولكم جزيل الشكر

#4

قوم بعمل static Reference للفورم الرئسيه

static public Form1 frmRef;

و في حدث الزر الذي يظهر الفورم الثانيه او حتي في Load الفرمه الرئسيه

frmRef = this;

و في الفورمه الثانيه تحت اي حدث تستطيع الوصول الي اي عضو في الفورمه الرئسيه

Form1.frmRef.Hide();

و لو تحتاج الي خاصيه واحده فقط اعمل Reference لها هي فقط بالطريقه السابقه

#5

الأخ أحمد طاهر الباز

شكرا لك في الحقيقة طريقة جميلة جدا

جزاك الله كل خير

#6
اقتباس
عند كابة

Form1 currentForm1;

هنا تم إنشاء object جديد من الـ Class Form1

ولكن ماذا عن الفورم الأصلي والأساسي

بكتابة الكود الذي ذكرت لا يتم انشاء Object جديد فانه لا يتم انشاء Object جديد في الذاكره الا باستخدام كلمة new ولم نستخدمها في الكود السابق, وانما جعلنا currentForm1 هذا يشير إلى مكان الـ Object بتاع الـ Form1 الموجود في الذاكره الآن.

وبالنسبه للوصول إلى العناصر الموجود في Form1 من الـ Form الأخرى, فأيضا اعمل public Properties لـتـ Set وتـ Get ما تريده.

#Read

http://MoutazShams.blogspot.com

projects003.gif

أعتذر عن التغيب هذه الأيام نظرا للانشغال المريب

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

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