منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة السي شارب C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=175)
+--- قسم : قسم اسئلة C#.NET (http://vb4arb.com/vb/forumdisplay.php?fid=176)
+--- الموضوع : طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة (/showthread.php?tid=19300)



طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - last_warrior - 18-02-17

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

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


تم ارفاق  المشروع  ارجو الحل


RE: طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - مساعدة - 18-02-17

السلام عليكم

هذا تعديل لكلاس class text
كود :
namespace texxxxxxxxxxxxxxxtbox
{


   public class text
   {

       string text1 = "";

       public text(Form1 form)
       {
           text1 = form.textBox1.Text;
       }

       public void Do(Form1 form)
       {
           //form.textBox1.Text = "dddddddddddd";
           if (text1 == form.textBox1.Text)
           {
               form.label1.Text = text1;
           }
       }

   }

}

وهذا تعديل كود البوتون
كود :
       private void button1_Click(object sender, EventArgs e)
       {
           text t = new text(this);
           t.Do(this);      
       }



RE: طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - محمد كريّم - 18-02-17

المشكلة في الكلاس 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);
       }


اتمنى ان تكون الفكرة وصلت

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


RE: طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - last_warrior - 18-02-17

شكرا جزيلا على المساعدة اخواني

مساعدة

محمد كريّم

khodor1985

انا جربت اكواد الاستاذ محمد كريم ونفعت ووصلت الفكرة ان شاء الله

جزاكم الله الخير ان شاء الله

انا ايضا قولت الكلاس لا يري ادوات الفورم شكرا اخي محمد وضحت الفكرة رغم البحث عنها فى موقع اجنبية ولم اصل لشئ


RE: طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة - last_warrior - 18-02-17

شكرا اخي khodor1985

اكواد وطريقة مهمة