PDA

View Full Version : مبتدی: تبدیل آرایه ای از جنس رشته به نوع کلاس مورد نظر



CodeforLife
یک شنبه 08 فروردین 1395, 18:20 عصر
سلام دوستان برای تبدیل آرایه ای از جنس رشته به نوع کلاس باید چه کار کنم ؟
میشه راهنماییم کنید؟
ممنونم

CodeforLife
دوشنبه 09 فروردین 1395, 06:47 صبح
for (int i = 0; i < lstProperty.Items.Count; i++)
{
ShapeProperteis.SelectedObject = lstProperty.Items[i];
//foreach (Shape shapes in lstProperty.Items)
//{
Type type = Type.GetType(lstProperty.Items[i].ToString());
ShapeProperteis.SelectedObject = Activator.CreateInstance(type);

}

CodeforLife
دوشنبه 09 فروردین 1395, 06:49 صبح
for (int i = 0; i < lstProperty.Items.Count; i++)
{
ShapeProperteis.SelectedObject = lstProperty.Items[i];
//foreach (Shape shapes in lstProperty.Items)
//{
Type type = Type.GetType(lstProperty.Items[i].ToString());
ShapeProperteis.SelectedObject = Activator.CreateInstance(type);

}


سلام دوباره .
این کد رو نوشتم exception دارم ....
An unhandled exception of type 'System.MissingMethodException' occurred in mscorlib.dll

Additional information: No parameterless constructor defined for this object.
متن exception
ممنون میشم کمکم کنید دوستان برنامه نویسم

ژیار رحیمی
دوشنبه 09 فروردین 1395, 09:45 صبح
سلام
میشه توضیح بدی دلیل تبدیل برای چه قسمتی از برنامه ت میخوای ازش استفاده کنی به نظر من روش پیاده سازی رو اشتباه رفتی بیشتر توضیح بدین تا راهنمایی لازم صورت گیرد

CodeforLife
دوشنبه 09 فروردین 1395, 13:48 عصر
سلام .همون برنامه paint که نوشتم رو دارم ادامه می دم .که هر صفحه ای که تشکیل شده از اشکال مختلف هست رو در یک فایل متنی save میکنم ....
بعد می خوام اون رو بازیابی کنم در برنامهopen
برای اینکار تمام فایل متنی رو در رشته میریزم (می خونم ) و با split جدا می کنم و در آرایه می ریزم...
بعد هم می خوام متد رسم رو در کلاسها فراخوانی کنم که رسم بشه ولی exception دارم ....
باید به shape که کلاس مبنا هست تبدیل بشه ولی نمی دونم چه طور ؟
اگر اشتباهه راه دیگه ای پیشنهاد بفرمایید
ممنونم

CodeforLife
دوشنبه 09 فروردین 1395, 13:51 عصر
try
{
LoadForm frmLoad = new LoadForm();
frmLoad.ShowDialog();

string pth = Path.GetFullPath(@"./") + Properties.Settings.Default.FileName + ".txt";
using (StreamReader sr = new StreamReader(pth))
{
string str = sr.ReadToEnd();
string[] strArray = str.Split('\n');
for (int i = 0; i < strArray.Length - 1; i++)
{
string[] strSecArray = strArray[i].Split(':');
lstProperty.Items.Add(strSecArray);
}
}
//================================================== ======
for (int i = 0; i < lstProperty.Items.Count; i++)
{
ShapeProperteis.SelectedObject = lstProperty.Items[i];
//foreach (Shape shapes in lstProperty.Items)
//{
Type type = Type.GetType(lstProperty.Items[i].ToString());
ShapeProperteis.SelectedObject = Activator.CreateInstance(type);

}

//// Graphics g = CreateGraphics();
// shapes.Draw(g);
//}
}
catch (InvalidCastException ex)
{
throw ex;
}

ژیار رحیمی
دوشنبه 09 فروردین 1395, 16:13 عصر
پیاده سازی شما صحیح نمیباشد .شما در برنامه paint اشکال محدودی داری بهتره به ازای هر shape یک عدد در نظر بگیری و محتصات و رنگ و چیزای لازم رو در قالب یک رکورد در فایل xml یا باینری ذخیره کنی و دوباره لود کنی(البته امکان ذخیره به صورت object هم میشه ذخیره کرد)
در این پست من قبلا یه برنامه paint نوشتم ازش در نحوه پیاده سازی استفاده کن.
http://barnamenevis.org/showthread.php?517059-%D8%B3%D8%B7%D9%84-%D8%B1%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%B4%D8%A7%D8%A8%D9%87-Paint-%D8%AF%D8%B1-C&p=2299129&viewfull=1#post2299129
در این برنامه تمام اشیا از کلاس Shape به ارث برده شدن که با یه حلقه for میتوان shape های رسم شده در فرم رو در فایل ذخیره کرد

CodeforLife
سه شنبه 10 فروردین 1395, 02:05 صبح
سلام قربان من این برنامه ررو دانلود کردم خیلی عالی بود و ممنونم از شما ...
ولی قسمت save , load نداره ....یعنی چیزی نوشته نشده!
کار با xml به چه صورتی هست ؟ من نمی دونم ؟
میشه یه توضیح بدین و یا یه منبع کامل برای اینکه بتونم پیاده سازی کنم ....
ممنون

CodeforLife
سه شنبه 10 فروردین 1395, 02:18 صبح
پیاده سازی شما صحیح نمیباشد .شما در برنامه paint اشکال محدودی داری بهتره به ازای هر shape یک عدد در نظر بگیری و محتصات و رنگ و چیزای لازم رو در قالب یک رکورد در فایل xml یا باینری ذخیره کنی و دوباره لود کنی(البته امکان ذخیره به صورت object هم میشه ذخیره کرد)
در این پست من قبلا یه برنامه paint نوشتم ازش در نحوه پیاده سازی استفاده کن.
http://barnamenevis.org/showthread.php?517059-%D8%B3%D8%B7%D9%84-%D8%B1%D9%86%DA%AF-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%85%D8%B4%D8%A7%D8%A8%D9%87-Paint-%D8%AF%D8%B1-C&p=2299129&viewfull=1#post2299129
در این برنامه تمام اشیا از کلاس Shape به ارث برده شدن که با یه حلقه for میتوان shape های رسم شده در فرم رو در فایل ذخیره کرد

دوباره سلام .
برای اینکه از فایل باینری استفده کنم , رنگ ها رو چه طوری به باینری تبدیل می کنه . رنگ که به شکل رشته هست ؟ !
مثلا red . اینو چه جوری به عدد تبدیل می کنه ؟

ژیار رحیمی
سه شنبه 10 فروردین 1395, 08:37 صبح
دوست گرامی نمونه کدهای زیادی در زمینه ذخیره و بازیابی در فایل های xml و باینری در انجمن وجود داره یه جستجویی انجام بدی موارد زیادی یافت میشود.
در مورد تبدیل رنگ شما باید رنگ shape رو به int تبدیل کنی
برای تبدیل نوع Color به نوع int

int intRGB = Label1.BackColor.ToArgb();

و برای تبدیل عدد به رنگ

Label1.BackColor = Color.FromArgb(intRGB);

ژیار رحیمی
سه شنبه 10 فروردین 1395, 08:40 صبح
دوباره سلام .
برای اینکه از فایل باینری استفده کنم , رنگ ها رو چه طوری به باینری تبدیل می کنه . رنگ که به شکل رشته هست ؟ !
مثلا red . اینو چه جوری به عدد تبدیل می کنه ؟

Color c = Color.Red;
var intRGB = c.ToArgb();