معکوس کردن آیتم های یک لیست باکس با سی شارپ #C

کد با پلتفرم بوی - کد سی شارپ
کد با پلتفرم بوی – کد سی شارپ

 معکوس کردن عناصر داخل یک Listbox در سی شارپ

سر و ته کردن آیتم های لیست باکس در واقع نوعی مرتب سازی است مثل نحوه مرتب‌سازی موارد ListBox به ترتیب نزولی (یا کاهشی) با استفاده از ArrayList .

روش اول

اگر به دنبال مرتب سازی هستید از این قطعه کد استفاده کنید :

نکته آیتم ها ممکن است با یک refresh به حالت اول برگردند.

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

قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.

private void Form1_Load(object sender, EventArgs e)
        {
            listBox1.Items.Add("C#");
            listBox1.Items.Add("Java");
            listBox1.Items.Add("C++");
            listBox1.Items.Add("Python");
            listBox1.Items.Add("Pascal");
            listBox1.Items.Add("Delphi");
            listBox1.Items.Add("Visual Basic");
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
         
            ArrayList list = new ArrayList();
            
            foreach(object o in listBox1.Items)
            {
                list.Add(o);
            }
            list.Sort();
            list.Reverse();
            listBox1.Items.Clear();
            foreach (object o in list)
            {
                listBox1.Items.Add(o);
            }
        }

روش دوم

متد معکوس در واقع یک روشی است که از توابع Linq می آید. در واقع مجموعه اصلی آیتم ها را اصلاح نمی کند، اما مجموعه جدیدی از آیتم ها را به ترتیب معکوس نشان می دهد، برمی گرداند.

listBox.Items.Insert(0, stackPanel1);
listBox.Items.Insert(0, stackPanel2); // inserts stackPanel2 before stackPanel1
listBox.Items.Insert(0, stackPanel3); // inserts stackPanel3 before stackPanel2

یا در صورت امکان، فقط آنها را به ترتیب معکوس اضافه کنید:

listBox.Items.Add(stackPanel3);
listBox.Items.Add(stackPanel2);
listBox.Items.Add(stackPanel1);

اگر برای همیشه می خواهید معکوس بمانند

از قطعه کد زیر استفاده کنید :

for (int i = 0; i < listBox.Items.Count / 2; i++)
{
    var tmp = listBox.Items[i];
    listBox.Items[i] = listBox.Items[listBox.Items.Count - i - 1];
    listBox.Items[listBox.Items.Count - i - 1] = tmp;
}

روش سوم

private void sortListBoxItems(ref ListBox lb, bool ascending)
{
    List<object> items;
    items = lb.Items.OfType<object>().ToList();
    lb.Items.Clear();
    if (ascending)
    { lb.Items.AddRange(items.OrderBy(i => i).ToArray()); }
    else
    { lb.Items.AddRange(items.OrderByDescending(i => i).ToArray()); }
}

روش چهارم

اگر نوعی شی قابل مرتب‌سازی داشتید، می‌توانید از linq و OrderByDescending استفاده کنید.

List<int> yourItems = new List<int>();
int thingsforlist = 0;
do
{
    yourItems.Add(thingsforlist);
    thingsforlist += 3;
}
while (thingsforlist <= 39);

listbox.DataSource = yourItems.OrderByDescending(i => i);
listbox.DataBind();

 

کدهای بیشتر - سی شارپ

آیا این مطلب برای شما مفید بود؟

بله
نه اصلا
از اینکه بازخورد خود را در اختیار ما گذاشته اید متشکریم. تا بعد 🙂

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *