سلام به دوستان.

من این کار رو در زمان دیزاین انجام دادم. برای مثال برای درست کردن ده تا لیبل بصورت Array در form1 رفتم توی Form1.Desinger.cs و مثلا کد زیر رو در اونجا اضافه کردم:

در قسمت بیرون از توابع در کنار تعریف بقیه کنترلها:

private System.Windows.Forms.Label[] lblItem;


و بعد در تابع InitializeComponent() در جای خودش اینا رو اضافه کردم :

this.lblItem =new System.Windows.Forms.Label[10];

this.lblItem[0] = new System.Windows.Forms.Label();
. . .
this.lblItem[10] =new System.Windows.Forms.Label();


بعد خصوصیات هر کنترل توی همون تابع تنظیم شده :
// 
// lblItem[0]
//
this.lblItem[0].Location = new System.Drawing.Point(7, 6);
this.lblItem[0].Name = "lblItem";
this.lblItem[0].Size = new System.Drawing.Size(38, 20);
this.lblItem[0].TabIndex = 0;
this.lblItem[0].Text = "0000";
this.lblItem[0].TextAlign = System.Drawing.ContentAlignment.MiddleCenter;


و بعد هم در آخر در قسمت تنظیم خصوصیات فرم که بقیه کنترلها به فرم Add میشوند، این کنترلها را Add کردم:

this.Controls.Add(this.lblItem[0]);
. . .
this.Controls.Add(this.lblItem[10]);


همه چیز درست کار میکنه و در دیزاین فرم هم نمایش داده میشه.
اما دو تا مشکل اساسی وجود داره :
اول اینکه در دیزاین تو ادیتور نمیشه کنترلها رو ویرایش کرد.
دوم اینکه نمیشه برای کنترلهای ایندکسی شده ایونت در نظر گرفت.(مثلا Click)
ایونت ها رو دقیقا مثل خود کدهای سی شارپ اضافه کردم ولی خطا میگیره. !

حالا سوال اینه که چطور به این کنترلها ایونت نسبت داد و باهاشون کار کرد و خطا نگیره؟