برگزیده های پرشین تولز

نوشتن حلقه برای اسامی مختلف

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
باز هم یک سوال مبتدیانه ی دیگه ......

آیا میشه این دستورات رو به صورت حلقه نوشت ؟؟
کد:
axNumber1.DisplayFromFile("1.png");
            axNumber2.DisplayFromFile("1.png");
            axNumber3.DisplayFromFile("1.png");
            axNumber4.DisplayFromFile("1.png");
            axNumber5.DisplayFromFile("1.png");
            axNumber6.DisplayFromFile("1.png");
            axNumber7.DisplayFromFile("1.png");
            axNumber8.DisplayFromFile("1.png");
            axNumber9.DisplayFromFile("1.png");
            axNumber10.DisplayFromFile("1.png");
            axNumber11.DisplayFromFile("1.png");
            axNumber12.DisplayFromFile("1.png");
            axNumber13.DisplayFromFile("1.png");
            axNumber14.DisplayFromFile("1.png");
میدونم که اصولا نمیشه .. ولی راهی برای حلقه ای کردن این دستورات وجود نداره ؟؟
چون توی برنامه ای که دارم مینویسیم از چنین دستوراتی زیاد دارم ./
 

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
axnumber یه ایمیج باکس activeX هست که با یکی از کامپوننت ها نصبش کردم ...
ممکنه یه مقدار بیشتر راجع به قرار دادن درون کالکشن توضیح بدین ؟ کالکشن چیه ؟
 
Last edited:

scorpion8108

Registered User
تاریخ عضویت
24 می 2005
نوشته‌ها
344
لایک‌ها
0
اگه ويندوز فرم مي نويسي ميتوني از this.Controls استفاده کني که تمام کنترل هاي فرم رو برمی گردونه، بعدش چک کني هرکدوم از نوع شي موردنظر است، متد مورد نظر( (DisplayFromFile("1.png")رو فراخواني کني.
 

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
ممنونم
ممکنه یه مقدار بیشتر توضیح بدید یا یه مثال بزنید یا یه مرجع معرفی کنید که این this.control رو توضیح داده باشه ... آخه من مبتدی هستم .
 
Last edited:

scorpion8108

Registered User
تاریخ عضویت
24 می 2005
نوشته‌ها
344
لایک‌ها
0
سلام
در ويندوز فرم this يه رفرنس به کلاس فرمه، و Controls هم آرايه اي از کنترل هاييه که روي فرم داري
 

nsh

Registered User
تاریخ عضویت
19 ژانویه 2006
نوشته‌ها
685
لایک‌ها
4
محل سکونت
i & j : 2 & 3
منظور همون آرايه است. حتما با اين آشنايي :

کد:
int[] Temp=new int[10]

تيكه كد بالا يه آرايه از نوع int به ظرفيت 10 تا درست ميكنه. حالا شما همينكارو با هر نوع شيء ديگه اي هم ميتوني انجام بدي.
 

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
ممنون .. ولی مشکل اینجاست که من اون شئی رو فقط به توی فرم ادیتور میتونم بسازم و نمیتونم با کد نویسی بزارمش توی فرم .
راستش من قراره یه فرم داشته باشم که توش حدود 40 تا آیکون هست (pixture box ) ... در حالت دیگه باید به جای این 40 تا picture box حدود 20 تا picture box با سایز بزرگتر باشه . و در حالت دیگه 8 تا با سایز خیلی بزرگتر و در حالت دیگه 4 تا .
ولی اگه همه ی این ها رو روی هم بزارم (یعنی حدود 60 تا ) و اونهایی رو که نمیخوام توی حالت های مختلف نشون نده توی Form editor همش جوری قاطی میشند که انتخاب و ویرایش کردنشون سخته. و تعداد خط هاییی هم که مدام باید برای اینها بنویسم کمی زیاد میشه .
حالا نمیدونم اینجور فرم ها رو چطور میسازند .
 

nsh

Registered User
تاریخ عضویت
19 ژانویه 2006
نوشته‌ها
685
لایک‌ها
4
محل سکونت
i & j : 2 & 3
ممنون .. ولی مشکل اینجاست که من اون شئی رو فقط به توی فرم ادیتور میتونم بسازم و نمیتونم با کد نویسی بزارمش توی فرم .
راستش من قراره یه فرم داشته باشم که توش حدود 40 تا آیکون هست (pixture box ) ... در حالت دیگه باید به جای این 40 تا picture box حدود 20 تا picture box با سایز بزرگتر باشه . و در حالت دیگه 8 تا با سایز خیلی بزرگتر و در حالت دیگه 4 تا .
ولی اگه همه ی این ها رو روی هم بزارم (یعنی حدود 60 تا ) و اونهایی رو که نمیخوام توی حالت های مختلف نشون نده توی Form editor همش جوری قاطی میشند که انتخاب و ویرایش کردنشون سخته. و تعداد خط هاییی هم که مدام باید برای اینها بنویسم کمی زیاد میشه .
حالا نمیدونم اینجور فرم ها رو چطور میسازند .
يعني در حقيقت مشكل شما اينه كه تا به حال هيچ كنترلي رو به صورت دستي ايجاد نكردي. درسته ؟
 

nsh

Registered User
تاریخ عضویت
19 ژانویه 2006
نوشته‌ها
685
لایک‌ها
4
محل سکونت
i & j : 2 & 3
اين تيكه كد رو بزار توي سازنده فرمت :

کد:
            Temp = new PictureBox[2];
            Temp[0] = new PictureBox();
            Temp[1] = new PictureBox();
            this.Controls.Add(Temp[0]);
            this.Controls.Add(Temp[1]);
            Temp[0].BackColor = Color.Aqua;


خب اول بگم كه اين دقيقا چيزي نيست كه ميخواستي اما مطمئنم با گذاشتن يه حلقه ساده ميتوني درستش كني و مفهومش رو درك كني. كد خيلي كثيفي هم هست كه فقط كارتو راه بندازه.حالا توضيح ميدم :

1. اول اينكه درست كردن يه كنترل براي روي فرم مثل هر new كردن شيئ ديگه است.
2. كلمه كليدي this هميشه به همون شيء ي اشاره ميكنه كه توش هستي. مثلا تو اين مثال به اين صورته : فرض كن نوبت اجرا به اون دوتا دستور this دار بالا ميرسه. حالا نگاه كن ببين كجايي ؟ بايد جوابت اين باشه : تو يكي از اشياع ساخته شده از كلاس فرمت. پس در حقيقت this به شي ء ساخته شده از روي form1 ت ( يا هر چيز ديگه اي كه اسمشو گذاشتي) اشاره ميكنه. بازم سر راست تر به خود فرمي كه در زمان اجرا ميبيني.
3. هر فرمي يك property به نام Controls داره كه كل اشياء درونش رو تو اون نگه ميداره ( مثل هر كامپننتي كه روش بزاري). بنابراين حالا كه ميخواي چند تا picturebox به صورت دستي اضافه كني بايد اونا رو به اين پراپرتي اضافه كني.
4. اون دستوري كه من رنگ پيش زمينه رو تغيير دادم فقط براي اينه كه رو فرم ، پيكچر باكسم ديده بشه
5.هر كنترلي كه اضافه ميكني چند تا صفتش رو بايد اجبارا تغيير بدي وگرنه به صورت پيشفرض ميمونه. يكي از اينا مثلا location اون كنترله ( وگرنه مثل اينجا تو گوشه سمت چپ وبالاي فرم ميره)

يه چيز ديگه هم اينكه الان دو تا پيكچر باكس رو هم افتاده ان. اگه ميخواي اون يكي هم معلوم بشه بايد محلشو عوض كني و رنگش رو هم مثل قبلي عوض كني
 

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
سلام .
ممنونم .
بلاخره با راهنمایی های شما تونستم به صورت ارایه و فقط با کد این picturebox ها رو درست کنم .
حالا فقط یه قضیه میمونه .
میخوام یک چنین تابعی برای هر کدوم از عناصر این آرایه بنویسم ..
کد:
        private void pictureBox1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("Clicked");
        }
اگه توی ویژوال درست شده بودند با دبل کلیک روی هر کدوم این تابع ساخته میشد ولی حالا که با چنین کدی :
کد:
for (int i = 0; i < 20; i++)
            {
                temp[i] = new AxGdImageBoxPro2.AxImageBox();
                this.Controls.Add(temp[i]);
                temp[i].Enabled = true;
                temp[i].Location = new System.Drawing.Point(20+(80*i),30 );
                temp[i].Name = "Image" + i.ToString();
                temp[i].OcxState = ((System.Windows.Forms.AxHost.State)(resources.GetObject("temp[0].OcxState")));
                temp[i].Size = new System.Drawing.Size(30, 30);
            }
تابع رو نوشتم نمیدونم چجوری میشه کلیک رو روی هر کدوم تشخیص داد ؟؟
 

ErfanEa

کاربر فعال برق و الکترونیک
کاربر فعال
تاریخ عضویت
9 می 2005
نوشته‌ها
811
لایک‌ها
10
سن
36
محل سکونت
Lost Heaven
خودم فهمیدم :D
با این
کد:
temp[i].ClickControl += new EventHandler(Form1_ClickControl);
 

nsh

Registered User
تاریخ عضویت
19 ژانویه 2006
نوشته‌ها
685
لایک‌ها
4
محل سکونت
i & j : 2 & 3
آره دقيقا. ميبخشيد زودتر جواب ندادم. چند روزي نگاه كردم ديدم جوابي ننوشتي ديگه سر نزدم.
راهشم دقيقا همونيه كه خودت گفتي. بايد eventhandler ها رو به صورت دستي اضافه كني
 
بالا