المشكلة في الكلاس class انك تقوم بانشاء نسخة جديدة من الفورم1 بهذا الكود
Form1 form = new Form1();
وهذا يعني ان الأدوات على الفورم الجديد form ليست نفسها الادوات التي تراها في الفورم المفتوح
والكود سينفذ في كل مرة تضغط الزر وسينشأ فورم جديد بأدوات جديدة
اكتشف ذلك باضافة هذا الكود في ميثود do() الموجودة في الكلاس
form.label1.Text = "الفورم الذي انشأته";
form.Show();
الآن اعتقد انك فهمت ما يحدث ولماذا لا يتغير النص في الفورم المفتوح
ننتقل للحل
يمكن ان تستخدم هذا الكلاس الجديد استبدله في ملف txt.cs
كود :
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Windows.Forms;
namespace texxxxxxxxxxxxxxxtbox
{
public class text
{
string text1;
private Form1 original_form1 = null;
public text(Form callingForm)
{
original_form1 = callingForm as Form1;
text1 = original_form1.textBox1.Text;
}
public void Do()
{
this.original_form1.label1.Text = text1;
}
}
}
قم باضافة المتغير الى كود استدعاء الكلاس في ملف الفورم
text t = new text(this);
لان constructor الكلاس اصبح يستقبل بارامتر اسم الفورم
كذلك اضيف استدعاء مكتبة جديدة لم تكن في الكلاس قبل التعديل
using System.Windows.Forms;
هكذا سيعمل الكود
يمكن ايضا استخدام طريقة اخرى يتعامل فيها الكلاس مع أدوات محددة فقط بدلا من الفورم كله
كود :
public class text
{
public text ()
{
}
public void Do(TextBox myTextBox, Label myLabel)
{
myLabel.Text = myTextBox.Text;
}
}
غير كود حدث الكليك في ملف الفورم الى
كود :
private void button1_Click(object sender, EventArgs e)
{
text t = new text();
t.Do(textBox1, label1);
}
اتمنى ان تكون الفكرة وصلت
يا مساعدة
ما انتبهت انك رديت بسبب التاخر في تشغيل المشروع ثم تنسيق الرد
لو الاخوة يحطوا الاكواد اللي فيها مشكلة بدل من رفع المشاريع ومرفقات يكون افضل
الله يعطيك العافية