PDA

View Full Version : صفر کدرن شماره گر در list



NIMA_1981
دوشنبه 12 اردیبهشت 1390, 19:32 عصر
سلام

من یک آرایه با استفاده از دستور زیر ساختم -حالا وقتی می خوام آرایه رو پاک کنم مقدار ها پاک میشه -اما یک شماره گر به اسم key داره که اون صفر نمیشه میشه راهنمایی کنید


List<List<long>> dist = new List<List<long>>();
من اینو تعریف کردم جطوری متونم پاک کنم یعنی در اصل این شماره key رو پاک کنم من آرایه رو پاک میکنم اما key پاک نمیشه من توی برنامه اینجوری استفاده کردم
همه چی درسته اما وقتی می خوام همه آرایه ها رو پاک کنم شماره این key از شماره قبلی شروع میشه




foreach


(var item in points)

{

MessageBox.Show(item.Key.ToString());
}


با تشکر

unknown.unforgiven
دوشنبه 12 اردیبهشت 1390, 19:43 عصر
سلام
از متد clear استفاده بکن
توضیحات بیشتر (http://msdn.microsoft.com/en-us/library/dwb5h52a.aspx)

NIMA_1981
دوشنبه 12 اردیبهشت 1390, 20:03 عصر
از این هم استفاده کردم اما این item.Key صفر نمیشه مثلا اگه 5 تا رکورد داشتی بعد از پاک کزدن count برابر صفر میشه اما item.Key برایر 6 میشه من میهوام اینم صفر بشه

NIMA_1981
یک شنبه 18 اردیبهشت 1390, 21:18 عصر
دوستان اگه کسی می دونه لطفا منو راهنمایی کنه

NIMA_1981
دوشنبه 19 اردیبهشت 1390, 13:16 عصر
ببنید دوستان من مشگا رو روشن تر میگم شاید بهتر باشه من یک صفحه دارم مه هر بار روش کلیک میکنم یک دایره که شماره وسطش هست رو قرار میده حالا وقتی میخوام صفحه رو پاک کنم بجای اینکه از صفر شروع بشه ادامه همون اعداد رو ادامه میده کد این قسمت که دایره ها رو میکشه اینه


foreach


(var item in points)

{

x = item.Value.X + 2;

y = item.Value.Y + 3;



g.DrawEllipse(p, item.Value.X - 4, item.Value.Y - 4, 28, 28);



StringFormat drawFormat = new StringFormat();

g.DrawString(item.Key.ToString(), f, b, x, y, drawFormat);



}


یعنی عدد رو از اینحا می خونه item.Key.ToString(), و توی دایره ها قرار میده

و points هم به این شکل تعریف کردم


public


Dictionary<int, Point> points = new Dictionary<int, Point>();




و برای پاک کردن هم از این روش استفاده میکنم اما جواب نمیده


foreach


(var item in points) points.Remove(item.Key);



points.Clear();


با تشکر

Amir Oveisi
دوشنبه 19 اردیبهشت 1390, 14:12 عصر
لیست رو یک بار dispose کنید و دوباره new کنید.
سوال:
چرا دارید از key استفاده می کنید؟

exlord
دوشنبه 19 اردیبهشت 1390, 14:21 عصر
آیتماتونو چجوری به Dictionery اضافه میکینین ؟ اون countr رو که باهاش مقدار Key رو میدین Reset نمیکنین ...
points.Remove(item.Key); این فقط value رو پاک میکنه ...
points.Clear(); تمام Key و Value هارو پاک میکنه

NIMA_1981
دوشنبه 19 اردیبهشت 1390, 14:28 عصر
ممنون ار پاسخ شما

برای قسمت اولی که فرمودید من از این روش استفاده کردم اما این خطا رو میده که عکس رو قرار دادم
http://barnamenevis.org/attachment.php?attachmentid=69736&stc=1&d=1304936713

http://barnamenevis.org/attachment.php?attachmentid=69735&stc=1&d=1304936712
اما پرا از این روش استفاده شده من روش دیگه ای بلد نیستم که به این متغییر ها دست رسی داشته باشه اگه روش بهتری هست راهنمایی کنید که این همه دردسر هم نکشم برای پاک کردن متغییر ها

NIMA_1981
دوشنبه 19 اردیبهشت 1390, 14:34 عصر
آیتماتونو چجوری به Dictionery اضافه میکینین ؟ اون countr رو که باهاش مقدار Key رو میدین Reset نمیکنین ...
points.Remove(item.Key); این فقط value رو پاک میکنه ...
points.Clear(); تمام Key و Value هارو پاک میکنه





this.points.Add((int)PNum.Value, new Point((int)LocX1.Value, (int)LocY1.Value));

من از این کد برای اضافه کردن استفاده میکنم -من دقیقا متوجه نشدم که باید چی کار کنم من همه اون دستوراتی که گفتین رو قرار دادم اما بازم این counter صفر تمیشه

exlord
دوشنبه 19 اردیبهشت 1390, 15:03 عصر
PNum.Value رو باید 0 کنین ...

NIMA_1981
دوشنبه 19 اردیبهشت 1390, 15:53 عصر
PNum.Value رو باید 0 کنین ...
این کارو میکنم بازم نمیشه

unknown.unforgiven
دوشنبه 19 اردیبهشت 1390, 17:24 عصر
چرا از یه متغیر static استفاده نمیکنی؟

NIMA_1981
دوشنبه 19 اردیبهشت 1390, 17:50 عصر
چرا از یه متغیر static استفاده نمیکنی؟


میشه بیشتر توضیح بدید

exlord
دوشنبه 19 اردیبهشت 1390, 18:04 عصر
این کارو میکنم بازم نمیشه
کدشو چجوری نوشتی؟
PNum چیه؟ NUmericUpDown ؟؟
کجا این ست میکنی به 0؟

Amir Oveisi
دوشنبه 19 اردیبهشت 1390, 18:55 عصر
برای قسمت اولی که فرمودید من از این روش استفاده کردم اما این خطا رو میده که عکس رو قرار دادم

شما points رو برابر null قرار دادید به همین دلیل این خطا رو که عکسشو گذاشتید میده. شما هر بار که میخواید مقدار هاتون ریست بشه، points رو دوباره new کنید. احتیاجی به null مقدار دادن هم نیست.

پ.ن: اصولا نباید این مشکل پیش بیاد براتون و با clear کردن مقدار key ها ریست بشه، و ممکنه به دلایل دیگه ای که در برنامتون وجود داره و ما ازش بی خبریم این اتفاق داره میفته

unknown.unforgiven
دوشنبه 19 اردیبهشت 1390, 20:20 عصر
میشه بیشتر توضیح بدید

مثال زیر رو در نظر بگیر:
فرض کن یه متغیر عددی داری که نمیخوای مقدار اون وقتی از یه فرم میری به یه فرم دیگه پاک بشه، اون وقت از یه متغیر static استفاده میکنن. طریقه استفاده ازش هم مثل بقیه متغیر هاست. مثلاً به جای اینکه بنویسی int a، مینویسی 5=static int a. با این کار متغیر a از نوع عددی و static تعریف میشه (با مقدار اولیه 5) و اگر بین فرم های برنامه جا به جا بشی و دوباره برگردی به همون فرمی که توش این متغیر رو تعریف کردی، مقدار متغیرت همونی هست که بود (حتی اگه دوباره دستور 5=static int a اجرا بشه مقدار همونی هست که بوده و 5 نمیشه). حالا تو این مساله به جای اینکه از key واشه شماره داخل دایره ها استفاده بکنی از یه متغیر عددی static استفاده بکن و هر سری که صفحه رو پاک کردی مقدار این متغیر رو هم 0 بکن

NIMA_1981
سه شنبه 20 اردیبهشت 1390, 20:55 عصر
دوستان دستئن درد نکنه کلا از for استفاده کردم کع دیگه از این key استفاده نشه

مرسی