PDA

View Full Version : گذاشتن کد برای یک کنترل ovalShape که هنوز ساخته نشده



Morteza-76
جمعه 22 فروردین 1393, 10:04 صبح
سلام من با این کد یک oval Shape جدید میسازم مشکل ساخته شدن ندارم
shapeContainer1.Shapes.Add(
new OvalShape()
{
Width = ovalShape22.Width,
Height = ovalShape22.Height,
BorderColor = ovalShape22.BorderColor,
BackColor = ovalShape22.BackColor,
BackStyle = BackStyle.Opaque,
Location = new Point(Convert.ToInt32(label2.Text.Trim()) + (int)19, Convert.ToInt32(label3.Text.Trim()) + (int)18),
}
);

حالا میخوام وقتی که مثلا این کد توسط کاربر اجرا شد اون ovalshape ساخته شده حرکت کنه کد حرکت رو دارم ولی چون این کد نه نامی برای oval Shape موقع ساختش میزنه که بگم کد های حرکت کردنشو واسه اون نام بزنه شما راهی به من پیشنهاد کنید ممنون

مهرداد صفا
جمعه 22 فروردین 1393, 14:41 عصر
سلام.
از طریق اندیس باید بتونید بهش دسترسی داشته باشید:


shapeContainer1.Shapes[0].Property1=value;
//or for example if cast needed:
((Shape)shapeContainer1.Shapes).Property1=value;

Morteza-76
جمعه 22 فروردین 1393, 21:03 عصر
سلام.
از طریق اندیس باید بتونید بهش دسترسی داشته باشید:


shapeContainer1.Shapes[0].Property1=value;
//or for example if cast needed:
((Shape)shapeContainer1.Shapes).Property1=value;

سلام روش اول جواب نداد اما روش دوم ارور میده درست متوجه نشدم برام توضیح بدید ممنون میشم آخه تو این روش ها چجوری اون ovalShape جدیدی که ساختم رو تشخیص میده!!!؟
این عکس ارور

http://www.uplooder.net/img/image/95/feff9aa69b849f8d6f26abf0118884b2/4-11-2014_21-32-24.jpg

behzadkhan
جمعه 22 فروردین 1393, 22:50 عصر
با سلام

می تونی کدتو بزاری.

با تشکر

Morteza-76
جمعه 22 فروردین 1393, 23:29 عصر
با سلام

می تونی کدتو بزاری.

با تشکر

گذاشتم دیگه همین یه خط کدی که آقای m.safa دادن

behzadkhan
جمعه 22 فروردین 1393, 23:33 عصر
از اینکه نمی تونم کمکت کنم ضعف من هست.

با تشکر

Morteza-76
جمعه 22 فروردین 1393, 23:40 عصر
از اینکه نمی تونم کمکت کنم ضعف من هست.

با تشکر

این چه حرفیه خیلی هامون خیلی چیزارو تو برنامه نویسی نمیدونیم نشانه ضعف نیست همه ی ما اینجوری هستیم ما تو این انجمن دقیقا میخوایم که توی برنامه نویسی پیشرفت کنیم

با تشکر

behzadkhan
جمعه 22 فروردین 1393, 23:46 عصر
ممنون Morteza-76 (http://barnamenevis.org/member.php?u=322640)

ولی باید کد بیشتری از برنامتو نشون بدی.

با تشکر

مهرداد صفا
یک شنبه 24 فروردین 1393, 18:53 عصر
سلام.
این کد کرو تست کنید:


foreach(OvalShape sh in shapeContainer1.Shapes)
MessageBox.Show(sh.Width.ToString());

Morteza-76
یک شنبه 24 فروردین 1393, 20:55 عصر
سلام.
این کد کرو تست کنید:


foreach(OvalShape sh in shapeContainer1.Shapes)
MessageBox.Show(sh.Width.ToString());



بله درسته ولی شما منظور منو درست متوجه نشدید من میخوام آخرین OvalShape درست شده( که طبق اون کدم که توی پست اول تاپیک زدم) فقط انتخاب بشه و بشه تغییرات داد شما نگا کنید من از این روش رفتم درست شد برای اون ovalShape که ساخته میشه اسم گذاشتم و توی حلقه ی foreach هم یه شرط گذاشتم که اگه ovalShape توی حلقه نامش برابر بود با نامی که دادم اونقت رنگ اون ovalShape رو عوض کنه

shapeContainer1.Shapes.Add(
new OvalShape()

{
Name = "Oval1",
Width = ovalShape42.Width,
Height = ovalShape42.Height,
BorderColor = ovalShape42.BorderColor,
BackColor = ovalShape42.BackColor,
BackStyle = BackStyle.Opaque,
Location = new Point(Convert.ToInt32(label2.Text.Trim()), Convert.ToInt32(label3.Text.Trim())),
});
foreach (OvalShape s in shapeContainer1.Shapes)
{
if (s.Name == "Oval1")
{
s.BackColor = Color.Blue;
}
}

ولی یه مشکل هست من نمیخوام رنگ اون ovalShape ی که ساختم عوض شه میخوام که از اون ovalShape در بیرون حلقه استفاده کنم یعنی نام اون رو در بیارم و در بیرون حلقه قرار بدم و ازش استفاده کنم ولی این غیر ممکنه گفتم شاید بشه بزارم نام رو توی یک لیبل و بعد بیرون حلقه ازش استفاده کنم ولی نمیدونم چجوری یعنی مقدار رشته ای رو به چی تغییر بدم و درون یک متغییر از نوع OvalShape قرار بدم لطفا کمکم کنید

مهرداد صفا
دوشنبه 25 فروردین 1393, 23:08 عصر
بله درسته ولی شما منظور منو درست متوجه نشدید من میخوام آخرین OvalShape درست شده( که طبق اون کدم که توی پست اول تاپیک زدم) فقط انتخاب بشه و بشه تغییرات داد شما نگا کنید من از این روش رفتم درست شد برای اون ovalShape که ساخته میشه اسم گذاشتم و توی حلقه ی foreach هم یه شرط گذاشتم که اگه ovalShape توی حلقه نامش برابر بود با نامی که دادم اونقت رنگ اون ovalShape رو عوض کنه

shapeContainer1.Shapes.Add(
new OvalShape()

{
Name = "Oval1",
Width = ovalShape42.Width,
Height = ovalShape42.Height,
BorderColor = ovalShape42.BorderColor,
BackColor = ovalShape42.BackColor,
BackStyle = BackStyle.Opaque,
Location = new Point(Convert.ToInt32(label2.Text.Trim()), Convert.ToInt32(label3.Text.Trim())),
});
foreach (OvalShape s in shapeContainer1.Shapes)
{
if (s.Name == "Oval1")
{
s.BackColor = Color.Blue;
}
}

ولی یه مشکل هست من نمیخوام رنگ اون ovalShape ی که ساختم عوض شه میخوام که از اون ovalShape در بیرون حلقه استفاده کنم یعنی نام اون رو در بیارم و در بیرون حلقه قرار بدم و ازش استفاده کنم ولی این غیر ممکنه گفتم شاید بشه بزارم نام رو توی یک لیبل و بعد بیرون حلقه ازش استفاده کنم ولی نمیدونم چجوری یعنی مقدار رشته ای رو به چی تغییر بدم و درون یک متغییر از نوع OvalShape قرار بدم لطفا کمکم کنید


شما باید با استفاده از اندیس به عضو مجموعه دسترسی داشته باشید:


shapeContainer1.Shapes[shapeContainer1.Shapes.Count-1].BackColor=color.Blue;

و یا اگر نام برای عضو مجموعه انتخاب کردید به این صورت امتحان کنید:


shapeContainer1.Shapes["Oval1"].BackColor=color.Blue;

با این حال اگر جواب سوالتون رو نگرفتید لطفا کاملتر توضیح بدید.