У меня есть этот метод для открытия и заполнения checklistbox.Checkedlistbox refresh not working
void Show_files()
{
FolderBrowserDialog FBD = new FolderBrowserDialog();
if (FBD.ShowDialog() == DialogResult.OK)
{
checkedListBox1.Items.Clear();
string[] files = Directory.GetFiles(FBD.SelectedPath);
string[] dirs = Directory.GetDirectories(FBD.SelectedPath);
foreach (string file in files)
{
checkedListBox1.Items.Add(file);
}
foreach (string dir in dirs)
{
checkedListBox1.Items.Add(dir);
}
}
}
и затем нажмите, чтобы удалить выбранные файлы.
private void button1_Click(object sender, EventArgs e)
{
foreach (var item in checkedListBox1.CheckedItems.OfType<string>().ToList())
{
DialogResult dialogResult = MessageBox.Show("Czy na pewno chcesz usunać zaznaczone pliki", "Czy na pewno chcesz usunać zaznaczone pliki?", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes)
{
File.Delete(item);
}
}
MessageBox.Show("Usunięto");
checkedListBox1.Refresh(); // here should refresh list of folder content
}
Я пытался очистить и добавить элементы снова в цикле (если рассчитывать не нулевой элементы) в методе Show_files(), но это не сработало. Скрыть и не показывать. Я не хочу снова открывать браузер папок. Это должно произойти автоматически.
не может изменять элементы внутри цикла foreach – kennyzx
@kennyzx Это список ToList, поэтому он работает. – LarsTech
все в порядке, не понимал этого; – kennyzx