C# تغيير الملصقات التي تم إنشاؤها في الفئة العامة من زر النموذج انقر فوق الزر

StackOverflow https://stackoverflow.com/questions/2125050

سؤال

بعد صعوبة في فهم الفصول الدراسية ولماذا لا يمكنني الوصول إلى كائن معين. كيف يمكنني تعديل الكود حتى أتمكن من تغيير "الخريطة" (التي هي مجموعة من الملصقات) في جميع فصولي/الأحداث؟

تنشئ الطريقة Draw2D () بعض الملصقات على النموذج الرئيسي الذي أرغب في تغييره في أحداث مختلفة (زر انقر في هذا المثال).

هل يمكن لأي شخص مساعدتي ، أو يلمح لي في الاتجاه الصحيح.

الرمز:

نموذج الطبقة الجزئية العامة 1: الشكل

{  
    public void Draw2d()  
    {  
        const int spacing = 20;  
        Label[][] map = new Label[5][];  
        for (int x = 0; x < 5; x++) 
        {  
            map[x] = new Label[5];  
            for (int y = 0; y < 5; y++)  
            {  
                map[x][y] = new Label();  
                map[x][y].AutoSize = true;  
                map[x][y].Location = new System.Drawing.Point(x * spacing, y * spacing);  
                map[x][y].Name = "map" + x.ToString() + "," + y.ToString();  
                map[x][y].Size = new System.Drawing.Size(spacing, spacing);  
                map[x][y].TabIndex = 0;  
                map[x][y].Text = "0";  
            }  
            this.Controls.AddRange(map[x]);  
        }  
    }  

    public Form1()  
    {
        InitializeComponent();  
    }  

    public void Form1_Load(object sender, EventArgs e)  
    {  
        Draw2d();  
    }

    private void button1_Click(object sender, EventArgs e)
    {  
        map[0][0].Text = "1";               //        <-- Doesn't work
    }


}

شكرًا!

هل كانت مفيدة؟

المحلول

أظن أنك أضفت

public Label[][] map;

لكن نسيت تغيير السطر الثاني من Draw2D من

Label[][] map = new Label[5][];

ل

map = new Label[5][];

لقد جربت رمزك للتو ، وهو يعمل بشكل جيد إذا قمت بتغيير هذين الخطين. إذا لم تكن هذه هي المشكلة ، فهل يمكنك أن تقول ما الخطأ الذي تحصل عليه ، من فضلك؟

نصائح أخرى

عليك أن تعلن الخريطة كعقار (عالمي إلى الفصل)

public partial class Form1 : Form {
   public Label[][] map;
   ....
}

ثم يمكنك استخدام داخل الفصل مثل

this->map[...][...]

أو من الخارج مثل

objClass->map[...][...]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top