PDA

View Full Version : سوال: ساختن دكمه tab و undo tab براي listbox !!!



amateur.programmer
دوشنبه 19 اردیبهشت 1390, 11:51 صبح
69724سلام دوستان!!!
من ميخوام تو برنامم كاربر بتونه با انتخاب يكي از item هاي list box و زدن دكمه tab /undo tab تعبيه شده در برنامه,به اون item تو listbox فاصله مناسب نسبت به ساير item ها رو بده!!!
برنامم چندتا باگ داره!!!
يكي اينكه وقتي tab رو ميزني بيشتر از دو بار tab ايجاد نميكنه!
ديگه اينكه item اي كه tab ميزني deselect نميشه!
آخريشم اينه كه undo tab كار نميكنه!!!
نمونه برنامه رو واستون ميزارم ممنون ميشم اگه يه نگاهي بهش بندازين و ايراد كارمو بگين
مرسي

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

amateur.programmer
دوشنبه 19 اردیبهشت 1390, 13:04 عصر
مرسي از راهنماييتون ولي من ميخوام تو خود برنامه item هاي listbox رو اضافه كنم بنابراين نبايد itemsource واسش تعريف كنم!
تو اين برنامه اي هم كه شما نوشتين اگه item source واسه listbox تعريف نكنيم كار نميكنه!!!
نميدونيد علتش چيه؟

مهدی فرزاد
دوشنبه 19 اردیبهشت 1390, 13:13 عصر
شما باید برای تغییر آیتم ها و استفاده از آنها یک منبع برای نگهداری آیتم ها داشته باشید
اگر دقت کنید هر ایتم از لیست باکس به نوع کلاس Test تبدیل میشه و بعد فیلد Name اون تغییر میکنه و مجدد آیتم ها در لیست باکس قرار میگیرن
نتیجه نمایش آیتم ها با روش اضافه کردن به شکل دستی فرقی نکرد اگر دقت کنید همون چهار آتم test1 , test 2 . test 3, test 4 مثل مثال شما ایجاد شده بود
من پیشنهاد میکنم آیتم ها رو به این شکل که من اضافه کردم اضافه کنید

amateur.programmer
دوشنبه 19 اردیبهشت 1390, 14:21 عصر
اين كارو كردم ولي تو item هاي تكراري كار نميكنه!!!
اين برنامه رو ببينيد:
69734

مهدی فرزاد
دوشنبه 19 اردیبهشت 1390, 14:54 عصر
این کد رو اضافه کنید
listBox1.SelectedValuePath = "Id";

و این دو کد رو به شکل زیر اصلاح کنید
list.Where(a => a.Id ==Convert.ToInt32(listBox1.SelectedValue)).Single( ).Name= '\t' + (listBox1.SelectedItem as Test).Name;

if (temp[0] == '\t')
list.Where(a => a.Id == Convert.ToInt32(listBox1.SelectedValue)).Single(). Name = temp.Substring(1);