PDA

View Full Version : حذف نشدن کنترل های موجود در flowLayoutPanel



رامین مرادی
چهارشنبه 02 اسفند 1396, 12:11 عصر
سلام وقت بخیر دوستان. با کد زیر نمیتونم موارد موجود داخل
flowLayoutPanel رو حذف کنم!!!:متفکر: دلیلش چیه؟؟

روند کار هم به این صورت هست که یه لیست باکس دارم که کاربر از موارد موجود داخل اون انتخاب میکنه و در رویداد سلکت ایندکس لیست ویو ابتدا باید کنترل های موجود در داخل
flowLayoutPanel حذف بشه و موارد جدید جایگزین بشه که متاسفانه حذف نمیشه و به ادامش اضافه میشه. کنترل های داخلی هم یوزر کنترل هست




foreach (Control item in flowLayoutPanel1.Controls)
{
flowLayoutPanel1.Controls.Remove(item);
item.Dispose();
}

Mahmoud Zaad
چهارشنبه 02 اسفند 1396, 12:15 عصر
سلام
نیازی به حلقه نیست.
flowLayoutPanel1.Controls.Clear();

رامین مرادی
چهارشنبه 02 اسفند 1396, 12:22 عصر
سلام
نیازی به حلقه نیست.
flowLayoutPanel1.Controls.Clear();

حافظه رو خالی میکنه؟؟ ممکنه کنترل های داخل اون زیاد باشه گاها

Mahmoud Zaad
چهارشنبه 02 اسفند 1396, 13:12 عصر
درسته، dispose نمیشه. کد زیر رو امتحان کنید:
List<Control> listControls = flowLayoutPanel.Controls.ToList();

foreach (Control control in listControls)
{
flowLayoutPanel.Controls.Remove(control);
control.Dispose();
}

رامین مرادی
چهارشنبه 02 اسفند 1396, 13:40 عصر
درسته، dispose نمیشه. کد زیر رو امتحان کنید:
List<Control> listControls = flowLayoutPanel.Controls.ToList();

foreach (Control control in listControls)
{
flowLayoutPanel.Controls.Remove(control);
control.Dispose();
}
متدی به اسم
ToList() نداره .!!!!

Mahmoud Zaad
چهارشنبه 02 اسفند 1396, 15:22 عصر
کد زیر رو اضافه کنید.
using System.Linq;

خط اول رو هم به شکل زیر تغییر بدید:
flowLayoutPanel.Controls.Cast<Control>().ToList();