سؤال

أنا أكتب برنامجًا يحصل على البيانات من السجل ثم يضيف مربعات المجموعات إلى عنصر تحكم علامة التبويب، وفي صندوق المجموعة أرغب في إنشاء أكبر عدد ممكن من عناصر التحكم في التصنيف (لعرض معلومات التسجيل) مثل العديد من البيانات (أزواج القيمة الرئيسية) أنا أخذت.للقيام بذلك قمت بإنشاء هذه الوظيفة:

private void AddAllControl()
{
    GroupBox TestGroupBox = new GroupBox();
    TestGroupBox.AutoSize = true;
    TestGroupBox.Text = "valami";
    TestGroupBox.Height = 500;
    for (int i = 0; i < 21; i++)
    {
        Label TempLabel = new Label();
        TempLabel.Text = i.ToString();
        TempLabel.Location = new System.Drawing.Point(20 + i, 30);
        TempLabel.Show();
        TempLabel.Visible = true;
        TempLabel.Enabled = true;
        TestGroupBox.Controls.Add(TempLabel);               
    }
    tabPage_SandBox.Controls.Add(TestGroupBox);
}

تتم معالجة هذه الوظيفة عند الضغط على زر.بعد ذلك يظهر مربع المجموعة بشكل صحيح، ولكن تظهر تسمية واحدة فقط (مع النص = 0) بدلاً من 21 تسمية.عندما أتوقف لتصحيح أخطاء البرنامج أرى أن جميع التسميات موجودة وجميع الخصائص صحيحة، ولكنها لا تظهر.يجب أن يكون هناك شيء لم ألاحظه.والآن سؤالي؟ماذا أخطأت؟كما ترون لقد حاولت على حد سواء visible و enabled الملكية ولكن لا أحد يجلب لي الحل.

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

المحلول

عليك أن تحدد

  TempLabel.AutoSize = true;

وعليك تعديل الموقع قليلاً

 TempLabel.Location = new System.Drawing.Point(20 + 10 * i, 30);

أو أعتقد أنك تريد أن تكون التصنيفات واحدة أسفل الأخرى بحيث يتعين عليك تعيين الموقع مثل

 TempLabel.Location = new System.Drawing.Point(20, 20+20 * i);

نصائح أخرى

إذا كانت التسميات الخاصة بك ذات حجم ثابت

TestGroupBox.Controls.Add(new Label()
{
    Text = i.ToString(),
    Location = new Point(20 + (i*20), 30),
    Size = new Size(20, 20)
});

سوف تفعل الخدعة

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