تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طلب حل لمشكلة التكست بوكس تعطي قيمة فارغة
#1
السلام عليكم ورحمة الله وبركاته

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


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


الملفات المرفقة
.rar   textbox.rar (الحجم : 45.66 ك ب / التحميلات : 22)
الرد
تم الشكر بواسطة:
#2
السلام عليكم

هذا تعديل لكلاس 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);      
       }
الرد
تم الشكر بواسطة: محمد كريّم , khodor1985 , last_warrior
#3
المشكلة في الكلاس 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);
       }


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

يا مساعدة
ما انتبهت انك رديت بسبب التاخر في تشغيل المشروع ثم تنسيق الرد
لو الاخوة يحطوا الاكواد اللي فيها مشكلة بدل من رفع المشاريع ومرفقات يكون افضل
الله يعطيك العافية
الرد
تم الشكر بواسطة: khodor1985 , last_warrior
#4
السلام عليكم أخي العزيز ورحمة الله وبركاته
لقد تم التعديل على المشروع بناء لطلبك

الأكواد :
الكلاس :
PHP كود :
public static void GetText (Form1 frm,TextBox txt)
 
       {
 
           foreach (Control item in frm.Controls)
 
           {
 
               if(item is TextBox) { frm.label1.Text item.Text; }
 
           }
 
       

استدعاء الأداة في النموذج :
PHP كود :
text.GetText(thistextBox1); 

المشروع بعد التعديل عليه :

.rar   khodor -1985 textbox.rar (الحجم : 48.43 ك ب / التحميلات : 13)

أتمنى لك التوفيق
إسرائيل إلى زوال ... وسوف تثبت الأيام ذلك ... قريباً إن شاء الله.
الرد
تم الشكر بواسطة: last_warrior
#5
شكرا جزيلا على المساعدة اخواني

مساعدة

محمد كريّم

khodor1985

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

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

انا ايضا قولت الكلاس لا يري ادوات الفورم شكرا اخي محمد وضحت الفكرة رغم البحث عنها فى موقع اجنبية ولم اصل لشئ
الرد
تم الشكر بواسطة: khodor1985 , محمد كريّم
#6
بتصور هذا الكود الذي سأصعه الآن هو حل ديناميكي يمكن استخدامه مع أي نموذج في المشروع :
PHP كود :
public static void GetText (Form frm,TextBox txt,Label lbl)
        {
            
lbl.Text txt.Text;
           
        } 

الإستدعاء في النموذج :
PHP كود :
text.GetText(thistextBox1,label1); 
إسرائيل إلى زوال ... وسوف تثبت الأيام ذلك ... قريباً إن شاء الله.
الرد
تم الشكر بواسطة: محمد كريّم , last_warrior
#7
شكرا اخي khodor1985

اكواد وطريقة مهمة
الرد
تم الشكر بواسطة: khodor1985


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ربط كومبو بوكس ببعضهم البعض mawadaalmogrbi 2 117 23-03-18, 12:31 AM
آخر رد: mawadaalmogrbi
  تحديث الكومبو بوكس combo box mahmoud3m 8 98 24-02-18, 03:24 AM
آخر رد: mahmoud3m
  [سؤال] تصحيح كود التاكد ان التكست بوكس ليس فارغأ قاسم 4 119 13-11-17, 05:28 PM
آخر رد: قاسم
  [C#.NET] المساعدة في نقل قيمة من ليبل الى تيكست وادي العوضي 2 126 06-10-17, 09:30 PM
آخر رد: وادي العوضي
  [C#.NET] المساعدة في تعبئة كومبو بوكس عن طريق تيكست بوكس وادي العوضي 2 173 05-10-17, 12:24 AM
آخر رد: وادي العوضي
  هل يمكن حفظ قيمة checkbox؟ abozeyd 2 175 26-08-17, 11:20 PM
آخر رد: abozeyd
  سؤال عن عمل فلترة باستخدام تكست بوكس last_warrior 0 337 10-12-16, 12:44 AM
آخر رد: last_warrior
  مساعدة في تمرير قيمة الى الكريستال ريبورت عدنان الشمري 6 628 19-10-16, 07:51 PM
آخر رد: عدنان الشمري
  التحقق من قيمة فى الريجيسترى Mohamed20 2 305 07-09-16, 05:36 PM
آخر رد: Mohamed20
  تعبئة الكومبو بوكس بحقلين بواسطة اجراء مخزن حماده السعيد 1 550 21-12-15, 02:27 PM
آخر رد: hamada558

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم