PDA

View Full Version : ایجاد صفی از کنترل ها



sanaz_k
جمعه 16 فروردین 1387, 20:15 عصر
سلام
من میخواستم چند کنترل درون یک صف قرار بگیرند و به ترتیب تغیر حالت بدن!
اول خواستم با آرایه این کارو انجام بدم اما نتونستم.
تو سایت هم جستجو کردم اما چیزی دستگیرم نشد:گریه:

unassigned_identifier
جمعه 16 فروردین 1387, 20:55 عصر
اگه همه از یه نوع باشن میتونی مثلا یه آرایه از button تعریف کنی

sinpin
جمعه 16 فروردین 1387, 21:03 عصر
من میخواستم چند کنترل درون یک صف قرار بگیرند و به ترتیب تغیر حالت بدن!
تغییر حالت یعنی چی ؟
خب با استفاده از یک ژنریک کالکشن نتونستید به منظورتون برسید ؟

sanaz_k
جمعه 16 فروردین 1387, 21:28 عصر
تغییر حالت یعنی چی ؟
خب با استفاده از یک ژنریک کالکشن نتونستید به منظورتون برسید ؟
من در مورد ژنریک کالکشن اطلاعاتم کمه حتما مطالعه میکنم
تغییر حالت مثال بود هر اتفاقی متونه باشه مثل ریسایز شدن یا حرکت دادن و...


اگه همه از یه نوع باشن میتونی مثلا یه آرایه از button تعریف کنی
همه یک نوع هستند ولی آرایه را از چه نوعی تعریف کنم و چطوری مقدار دهیش کنم

مثال:


listBox1.Location = new System.Drawing.Point(x,y);

حالا در مواقع مختلف لیست باکس های مختلفی باید محلشون تغییر پیدا کنه!
اول اینکه چطوری میتونم صفی از این لیست باکسها تشکیل بدم(ترجیحا حلقوی)
دوم چطوری به خاصیت Location اولین عنصر یا یک عنصر مشخص دسترسی پیداکنم!
با تشکر از کمکتون

m110_110
جمعه 16 فروردین 1387, 21:39 عصر
خوب یک مثال می تونه این باشه
امیدوارم به دردت بخوره


Button[] bt = newButton[10];
for (int i = 0; i < 10; i++)
{
bt[i] = newButton();
bt[i].Text = i.ToString();
bt[i].Location = newPoint(i * 30, 20);
bt[i].Size = newSize(30,30);
this.Controls.Add(bt[i]);
}

-----------------------------------------------------------

همیشه ممنون خدا باش

Mahdi.Kiani
جمعه 16 فروردین 1387, 21:42 عصر
من در مورد ژنریک کالکشن اطلاعاتم کمه حتما مطالعه میکنم
تغییر حالت مثال بود هر اتفاقی متونه باشه مثل ریسایز شدن یا حرکت دادن و...


همه یک نوع هستند ولی آرایه را از چه نوعی تعریف کنم و چطوری مقدار دهیش کنم

مثال:


listBox1.Location = new System.Drawing.Point(x,y);

حالا در مواقع مختلف لیست باکس های مختلفی باید محلشون تغییر پیدا کنه!
اول اینکه چطوری میتونم صفی از این لیست باکسها تشکیل بدم(ترجیحا حلقوی)
دوم چطوری به خاصیت Location اولین عنصر یا یک عنصر مشخص دسترسی پیداکنم!
با تشکر از کمکتون

با سلام
من که درست متوجه نشدم می خواین چیکار کنین و هدفتون چیه

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


List<ListBox> listBoxCollections = new List<ListBox>();



این لیست آرگومان هایی فقط از جنس ListBox میگیره .. این امر باعث میشه که خیلی از مشکلاتی که با ArrayList وجود دراه و ممکنه برنامه را کرش کنه، از بین بره

listBoxCollections ای که در کد بالا ایجاد شده دارای متد های مختلفی برای اضافه کردن، حذف کردن و ... داره

همچنین توسط خاصیت indexer آن ، می تونین به آیتم خاصی دسترسی پیدا کنید
مثلا




ListBox lst = listBoxCollections[0];


اولین آیتم را بر میگرونه ..

این یه مورد بسیار ساده از ژنریک ها بود ..
بقیه اطلاعات با خودتون و جستجو در Google ، MSDN و سایت های دیگه

موفق باشید

m110_110
جمعه 16 فروردین 1387, 21:43 عصر
همچنین می تونی از کنترل هایی که درون فرمت هست استفاده کنی یعنی حتما نباید کنترل ها رو به این صورت به فرمت اضافه کنی
برای مثال


Button[] bt = newButton[5];
bt[0] = button1;
bt[1] = button2;
bt[2] = button3;
bt[3] = button4;
bt[4] = button5;
for (int i = 0; i <5; i++)
{
bt[i].Text = i.ToString();
}

Mahdi.Kiani
جمعه 16 فروردین 1387, 21:49 عصر
یا نکنه منظورتون اینه ؟ واقعا یک صف از لیست باکس ها می خواین؟ صفی با مشخاصت اون چیزی که در DataStructure ها اومده؟ در این صورت باید از کد زیر استفاده کنید




Queue<ListBox> listQueue = new Queue<ListBox>();


برای وارد کردن عنصر جدید به صف



listQueue.Enqueue(new ListBox());



برای حذف کردن عنصر از صف :


listQueue.Dequeue();


همانطور که می دونین صف = LIFO = Last In First Out (یا خروج به ترتیب ورود) ( یا : هر کی اول اومده، اول هم میره )..
واسه همین هنگام حذف کردن، دیگه نیاز به پاراکتر نداره . چون همیشه آیتم سر صف حذف میشه

موفق باشید

sanaz_k
جمعه 16 فروردین 1387, 21:50 عصر
با سلام
من که درست متوجه نشدم می خواین چیکار کنین و هدفتون چیه



متشکر از راهنماییتون در مورد ژنریک کالکشن
در مورد کاری که میخواهم بکنم باید بگم من چند تا کنترل را باید به نوبت یک خاصیت مشترکشون رو تغییر بدم و این این کار باید به تناوب و با کنترل کاربر انجام بشه در نتیجه این کنترل ها باید درون نوعی صف(ترجیحا حلقوی قرار بگیرن ودر زمان فراخوانی بیانو تغییر خاصیت بدن
به خدا بهتر از این نمیتونم توضیح بدم:لبخندساده:

Mahdi.Kiani
جمعه 16 فروردین 1387, 21:54 عصر
متشکر از راهنماییتون در مورد ژنریک کالکشن
در مورد کاری که میخواهم بکنم باید بگم من چند تا کنترل را باید به نوبت یک خاصیت مشترکشون رو تغییر بدم و این این کار باید به تناوب و با کنترل کاربر انجام بشه در نتیجه این کنترل ها باید درون نوعی صف(ترجیحا حلقوی قرار بگیرن ودر زمان فراخوانی بیانو تغییر خاصیت بدن
به خدا بهتر از این نمیتونم توضیح بدم:لبخندساده:

خوب با یه حلقه for می تونین کارتون را راه بندازین دیگه ...
تعداد عناصر درون لیست را که دارین



listBoxCollections.Count


حالا به یه حلقه ساده :




for (int i = 0; i < listBoxCollections.Count; i++)
{
// Do Somthing

}

sanaz_k
جمعه 16 فروردین 1387, 22:00 عصر
یا نکنه منظورتون اینه ؟ واقعا یک صف از لیست باکس ها می خواین؟ صفی با مشخاصت اون چیزی که در DataStructure ها اومده؟ در این صورت باید از کد زیر استفاده کنید




Queue<ListBox> listQueue = new Queue<ListBox>();


برای وارد کردن عنصر جدید به صف



listQueue.Enqueue(new ListBox());



برای حذف کردن عنصر از صف :


listQueue.Dequeue();


همانطور که می دونین صف = LIFO = Last In First Out (یا خروج به ترتیب ورود) ( یا : هر کی اول اومده، اول هم میره )..
واسه همین هنگام حذف کردن، دیگه نیاز به پاراکتر نداره . چون همیشه آیتم سر صف حذف میشه

موفق باشید
من یکم منظورمو ار صف بد گفتم نمیخواهم عنصری حذف بشه یعنی نیازی به خود صف نیست همون آرایه ای از کنترل ها مشکلو حل میکنه فقط نیاز به یک شمارنده داره که بگه عنصر بعدی چیه!
خیلی خیلی ممنونو بچهه ها خصوصا از m110_110 فکر کنم مشکلم حل شد!

soltanc
شنبه 17 فروردین 1387, 03:02 صبح
این برنامه یک صف حلقوی هست.
فقط باید کمی تغییر بدید. مثلا نوع ارایه به object و...
باز هم بیشتر توضیح بدین تا بیشتر کمک کنیم.فایل رو ضمیمه کنید تا برنامه واضح باشه الان گنگه.

sinpin
شنبه 17 فروردین 1387, 05:13 صبح
من یکم منظورمو ار صف بد گفتم نمیخواهم عنصری حذف بشه یعنی نیازی به خود صف نیست همون آرایه ای از کنترل ها مشکلو حل میکنه فقط نیاز به یک شمارنده داره که بگه عنصر بعدی چیه!
شاید نگاهی گذرا به این پستها هم بد نباشه :
http://barnamenevis.org/forum/showpost.php?p=472644 (http://barnamenevis.org/forum/showpost.php?p=472644&postcount=117)
http://barnamenevis.org/forum/showpost.php?p=472650
http://barnamenevis.org/forum/showpost.php?p=472646