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

تمرير المتغيرات بين الفورم

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

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

اردت ان استفسر عن طريقة نقل متغير من فورم الى فورم أخر............

حيث اني اريد ان استفيد من قيمة مدخلة في تكست بوكس في الفورم الاول في عمليات اجريها في الفورم

الثاني............

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

ارجو ارشادي الى الطريقة الصحيحة

وشكرا"..............

#2

بسيطة:

عرف متحول public ضمن الفورم الثاني:

public string textName;

وأثناء استدعاء الفورم الثاني من الأول اكتب:

Form2 f = new Form2();

f.textName = textBox1.Text;
f.ShowDialog();
#3

احدى مبادئ الـ OOP .... قم بإستخدام الـ property بدلاً من الـ public variables ....

رأس الحكمة الإيمان بالله

#4

جزاك الله خيراً أخي عبد العليم, ملاحظة في مكانها ...................... لذلك أكتب

private string _textName;

public string TextName
{
     Get
     {
        return _textName;
     }
     set
     {
        _textName = value;
     }
}

Form2 f = new Form2();

f.TextName = textBox1.Text;
f.ShowDialog();
#5

تم التعديل

الحل كان مقترح لل vb

تم تعديل هذه المشاركة بواسطة محمد النحراوي في 29 سبتمبر 2005 في 02:19

#6

السؤال غير واضح بشكل جيد.. فممكن أن يكون السؤال عبارة عن أن الفورمين لا يتم انشائهم واحد من الآخر بل تم انشائهم عن طرق فورم آخر.

الفورم الأول:

public string TextName {
    Get {
       return textBox1.Text.Trim();
    } 
    set {
	if (value == null) throw new ArgumentException(...);
	textBox1.Text = value;
    }
}

الفورم الثاني الذي يريد الوصول إلى الفورم الأول يحتاج إلى reference له ، ويمكن الحصول على هذا بعدة طرق ..

1- تمرير مؤشر الفورم الأول إلى الفورم الثاني عن طريق ال constructor ذات الفورم الثاني . يتم تخزين هذا المؤشر ومن ثم استخدامه من اجل استدعاء TextName

2- إذا كان الفورم الأول يملك نسخة وحيدة فيمكن استخدام singlton pattern وهو أن يحتوي الفورم الأول على متحول من نوع static يمكن من خلاله أخذ مؤشر للفورم ، مثال:

class Form1 : ...
{
	static Form1 _Instance = null;

	protected Form1() {
	}

	public static Form1 Instance {
    get {
       if (_Instance == null) throw InvalidOperationException(...);
       return _Instance;
    }
	}

	public static void ShowForm() {
    if (_Instance == null) {
       Form1 form = new Form1();
       _Instance = form;
    }
    _Instance.Show();
	}
}

3- إذا كان الفورمين يعملان تحت نفس ال thread فيمكن وضع مؤشر الفورم الأول في الثريد نفسه باستخدام Thread.SetData و Thread.GetData و Thread.GetNamedDataSlot ..

الحل بالظبط يعتمد على المشكلة بالتحديد وعلى طبيعة البرنامج.

Coding on the Cloud and for the Cloud!

My Blog

#7

أقترح فصل بيانات البرنامج من شفرة الواجهة الرسومية!

public class Person{
//code

}

public class MyFrame:Window{
Person person;
MyFrame(Person person){
this.person=person;
}
public void showOtherFrame(){
new MyFrame2(person).show();
}
}

بالتوفيق! أرجو أن تأخذ الفكرة!

#8

هذا تمرير عن طريق get set

لكن ماذا عن لو اردت الدخولعلى احد الخصائص من فورم اخر مثل visable textbox.

#9

شكراً على تجاوبكم.............

وعلى العموم طريقة الأستاذ إسماعيل عنجريني الأولى حققت لي غايتي وتعمل 100%

شكرا لكم.....

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

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