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

طريقة رائعة للتخاطب بين Forms

مغلق
بدأه إبراهيم دويكات في 7 مارس 2006 · 7 رد · 1,197 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

عندما كتبت الكود توقعت أن ذلك سيؤدي إلى خطأ، لكن النتيجة كانت مغايرة جدا ولدرجة لم أكن أتوقعها حتى!!!!

كنت عندما أريد تغيير خاصية معينة لـForm2 من خلال Form1 أكتب الطريقة العادية والمعروفة للـevents والتي كنت أملّ من كتابتها، لكن الان بالامكان كتابة ذلك بكل بساطة......

تخيل أنك تريد مثلا تغيير عنوان Form2 باستخدام Form1

سنضطر لعمل Delegeate و event ووووووووو............الخ

انظروا إلى هذه الطريقة الرائعة التي ستقوم بذلك

Form2 Form2=new Form2();
Form2.Show();

Form2.Text="Wowwww!!!!!";

ويمكن تطبيق ذلك على أي خاصية من خصائص الـForm

اليست هذه الطريقة رائعة؟؟

طبعا لاستخدام نفس النسخة من هذا الـForm2 انقل الجملة الأولى إلى داخل class نفسها، بعد هذا السطر:

public class Form1 : System.Windows.Forms.Form

وبهذا نكون قد وصلنا إلى طريقة سريعة جدا (كالمستخدمة في VB5 وVB6)

أرجو أن تستفيدوا منها وأن تساهم في تسهيل عملكم...........

..إبراهيم..

My_Sign.jpg
#2

حلوه اخ ابراهيم

وكمان ممكن تمرير البارترات الى متغيرات في الفوم الثاني بشرط انه يكون من نوع public

abo_alzobaer@hotmail.com

#3

لكن ما زبط انه استدعي method

My_Sign.jpg
#4

الطريقه موجوده في .net من البداية و نستخدمها من البداية :s و هي جدية في حالات كثيرة :)

عمرو عيسي

#5

طريقه ناجحه بس السؤال الي يطرح نفسه هل هي الطريقه الصحيحه المعروف عن الداله Show() انها تستخدم مع الداله Hide() وكلا الدالتين Thread بعكس الداله ShowDialog() اذا اردت اخفاء الفورم تستخدم Hide() واذا اردت اظهار الفورم من جديد نستخدم Show()

اما اذا استخدمت ShowDialog() فإنه يقوم بإظهار الفورم ولكن لايقوم بتنفيذ السطر الذي يليه لإنها ليست Thread

كود الأخ أبراهيم استخدم Show() ليستطيع تغير خصائص form2 وناجح في ذلك لإن الفورم فعلا شغال بس على ال background

ونفسه الأخ ابراهيم كان شك في ان الكود يشتغل بالشكل الصحيح

انظر الى هذا الحل اتوقع انه هو الحل الأفضل:

قم بتعريق اوبجكت من النوع form2 داخل فورم2 :

private Form2 myfrom2;

اضف هذا السطر في ال constructor :

myfrom2 = this;

هنا سنستخدم خاصية set و ال get اضف هذا الكود في فورم 2 :

public Form2 Myfrom2
        {
            set { myfrom2 = value; }
            get { return myfrom2; }
        }

البرنامج موجود في المرفقات

فإن اصبت فمن الله وإن اخطأت فمن نفسي والشيطان

WindowsApplication2.rar

#6

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

مشكور يا اخ ابراهيم عالموضوع الرائع

انا مبتدي في هذي اللغه

الحين انا استخدمت نفس كودك.. وبالفورم الثانية بووتن

بي ماعرفت كيف اخلي لما يضغط على هذا البوتن يعمل اغلاق للفورم الثانية..

انتظر لردك اخي الكريم

وشكرا

#7

إذا أردت إغلاق الثاني من الأول

Form2.Close();

أما أذا اردت اغلاق الثاني من نفس (الثاني من الثاني)

this.Cloes();

تم تعديل هذه المشاركة بواسطة إبراهيم دويكات في 19 أبريل 2006 في 19:00

My_Sign.jpg
#8
الحقباني كتب:
طريقه ناجحه بس السؤال الي يطرح نفسه هل هي الطريقه الصحيحه المعروف عن الداله Show()  انها تستخدم مع الداله  Hide() وكلا الدالتين Thread  بعكس الداله ShowDialog()  اذا اردت اخفاء الفورم تستخدم Hide() واذا اردت اظهار الفورم من جديد نستخدم Show() 

اما اذا استخدمت  ShowDialog() فإنه يقوم بإظهار الفورم ولكن لايقوم بتنفيذ السطر الذي يليه لإنها ليست Thread

كود الأخ أبراهيم استخدم Show()  ليستطيع تغير خصائص form2 وناجح في ذلك لإن الفورم فعلا شغال بس على ال background

ونفسه الأخ ابراهيم كان شك في ان الكود يشتغل بالشكل الصحيح

انظر الى هذا الحل اتوقع انه هو الحل الأفضل:

قم بتعريق اوبجكت من النوع form2  داخل فورم2 :

private Form2 myfrom2;

اضف هذا السطر في ال constructor  :

myfrom2 = this;

هنا سنستخدم خاصية set  و ال get اضف هذا الكود في فورم 2 :

public Form2 Myfrom2
        {
            set { myfrom2 = value; }
            get { return myfrom2; }
        }

البرنامج موجود في المرفقات

فإن اصبت فمن الله وإن اخطأت فمن نفسي والشيطان

أحب أن أذكر أن ShowDialog تعمل Blocking أي أن الجمل التي تكون تحت هذا الـMethod لن تطبق إلا بعد إغلاق الـ Form

وشكرا على ردك وكودك

My_Sign.jpg

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

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