وعليكم السلام ورحمة الله وبركاته
المشكلة عندك هي : كيف تتحكم بأداة موجودة على نافذة ثانية؟؟ :
لن أشرح لك المشكلة نفسها بل مثال بسيط عنها
وأنت قم بحل مشكلتك مع نقل البيانات،
للتبسيط : أفتح مشروع جديد وضع فيه نافذتين :
في النافذة الأولى ضع عليها زرين (button1) - (button2)
وفي النافذة الثانية ضع عليها (textBox1)
من أجل أن تجعل الـ (textBox1) مرئية في كل النوافذة الأخرى
عليك منح صلاحيات الرؤية لها وذلك من خلال الخاصية (Modifiers) اختر منها القيمة (Public) مثلاً..
نرجع للنافذة الأولى التي سنقوم من خلالها التحكم بمدخلات التكست الموجودة على النافذة الثانية.
عليك أولاً أن تصنع متغير مرتبط مرجعياً بالنافذة الثانية بحيث يتحكم بالنافذة الثانية إن كانت مفتوحةو إن لم تكن مفتوحة يفتح نسخة جديدة عنها.
ضمن منطقة التصريح العام تكتب الكود التالي:
كود :
Form2 frm2 = (Form2)Application.OpenForms["Form2"];
ضمن حدث الـ (button1) عليك أن تكتب الكود التالي:
كود :
if (frm2 != null)
frm2.Activate();
else
{
frm2 = new Form2();
frm2.Show();
}
بهذا تصبح النافذة الثانية مرتبطة بالمتغير (frm2) فأي أمر يوجه لها من خلاله يتم تنفيذه على كل أداة خاصية الرؤية فيها (Public) يتم تنفيذه مباشرة..
لو أردنا أن نكتب أي شيء في مربع النص الموجود على النافذة الثانية نعطيه الأمر :
كود :
frm2.textBox1.Text = "Hello...";
فيصبح الكود الموجود على النافذة الأولى بالشكل التالي :
كود :
Form2 frm2 = (Form2)Application.OpenForms["Form2"];
private void button1_Click(object sender, EventArgs e)
{
if (frm2 != null)
frm2.Activate();
else
{
frm2 = new Form2();
frm2.Show();
}
}
private void button2_Click(object sender, EventArgs e)
{
frm2.textBox1.Text = "Hello";
}
الزر الأول يربط النافذة الثانية إن كانت ظاهرة أو ينشئها من جديد ويربطها بالمتغير frm2
والزر الثاني يتحكم بالمدخلات في مربع النص الموجود على النافذة الثانية ..
هذه الطريقة فيك تعممها على كل الأدوات في أي نافذة من نوافذ السي شارب ..
والآن جاء دورك : لتساعد نفسك في مشروعك..