PDA

View Full Version : سوال: پیمایش دو لیست با هم



silvery
پنج شنبه 08 تیر 1391, 15:50 عصر
سلام .خسته نباشید دوستان
من دوتا لیست باکس دارم. میخواستم ببینم باید چیکار کنم که وقتی اسکرول لیست اولو حرکت میدم ,اسکرول لیست دومم حرکت کنه.اصلا امکان همچین کاری وجود داره؟

Beginner2013
پنج شنبه 08 تیر 1391, 17:56 عصر
سلام .خسته نباشید دوستان
من دوتا لیست باکس دارم. میخواستم ببینم باید چیکار کنم که وقتی اسکرول لیست اولو حرکت میدم ,اسکرول لیست دومم حرکت کنه.اصلا امکان همچین کاری وجود داره؟

سلام
اینجا (http://www.codeproject.com/Tips/197335/Synchronized-ListBox-objects-or-how-to-scroll-2-Li) رو ببینید

silvery
پنج شنبه 08 تیر 1391, 18:38 عصر
سلام
اینجا (http://www.codeproject.com/Tips/197335/Synchronized-ListBox-objects-or-how-to-scroll-2-Li) رو ببینید

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

Beginner2013
پنج شنبه 08 تیر 1391, 19:24 عصر
سلام ممنون از راهنماییتون اما من چیز زیادی از این کدا نفهمیدم.یعنی همشو واسه پیمایش همزمان باید بنویسم؟میشه یه توضیح دربارش بدین؟
راه ساده تری نیست؟

سلام،شما لازم نیست کد بالایی رو متوجه بشید،شما فقط باید از چند خط کد دوم استفاده کنید.
کد بالایی به کلاسه که از ListBox به عنوان کلاس پایه استفاده کرده،شما برای استفاده ازش می تونید یه پروژه از نوع Windows User Control Library بسازید و همه کدهای پیش فرض رو پاک و کدهای مذکور رو جایگزین و کامپایل کنید،به این ترتیپ شما یک کامپوننت به صورت DLL دارید که می تونید در پروژتون اونو Add کنید.بعدشم که توضیح داده 2 تا از اونا رو میندازید رو فرم و اون 2 خط کدی رو که گفته برای رویدادهای OnVertivalScroll شون می نویسید.
روش دومم اینه کلاس مذکور رو بدون کامپایل همینجوری به برنامتون اضافه و با کدنویسی ازش نمونه سازی کنید و اونو به فرموتون اضافه کنید و بقیه ماجرا...

silvery
جمعه 09 تیر 1391, 16:53 عصر
.
روش دومم اینه کلاس مذکور رو بدون کامپایل همینجوری به برنامتون اضافه و با کدنویسی ازش نمونه سازی کنید و اونو به فرموتون اضافه کنید و بقیه ماجرا...
سلام.بازم ممنون از راهنماییتون.من همینکارو کردم.یعنی اول کلاسو به برنامم اضافه کردم بعد کد دوم رو واسه لیست باکسام به صورت زیر نوشتم اما بازم اتفاقی نیوفتاد.


private void listBox1_OnVerticalScroll(object sender, ScrollEventArgs e)


{


listBox2.TopIndex = listBox1.TopIndex;


}





private void listBox2_OnVerticalScroll(object sender, ScrollEventArgs e)


{


listBox1.TopIndex = listBox2.TopIndex;


}
مسئله اینجاس که من وقتی این دوتا تابع رو داخل کلاس لیست باکس که تعریف شده مینویسم لیست باکس هام رو نمیشناسه و وقتی داخل کلاس خود فرم تعریفشون میکنم تا لیستام شناخته بشن ,لیستا شناخته میشن ولی بازم با هم پیمایش نمیشن.حالا باید چیکار کنم؟

silvery
شنبه 10 تیر 1391, 09:10 صبح
یعنی هیشکی نیست به من کمک کنه؟

samadblaj
شنبه 10 تیر 1391, 10:20 صبح
سلام با این کد میشه توی یه دکمه بنویسیدش ببینید کاری که میخواید انجام میده؟

listBox1.TopIndex = listBox2.TopIndex;
listBox2.TopIndex = listBox1.TopIndex;


یا با این روش که به اعتقاد من بهینه تر و مناسبتره ::متفکر:

if (checkedListBox1.Items.Count > 0)
{
int selected = checkedListBox1.SelectedIndex;
if (checkedListBox1.GetItemChecked(selected) == false)
{
checkedListBox1.SetItemChecked(selected, true);
listBox1.SetSelected(selected, true);
}
else if (checkedListBox1.GetItemChecked(selected) == true)
{
checkedListBox1.SetItemChecked(selected, false);
listBox1.SetSelected(selected, true);

}
}