【问题标题】:Checkedlistbox refresh not working选中列表框刷新不起作用
【发布时间】:2014-11-18 15:48:32
【问题描述】:

我有这个方法可以打开并填写checkedlistbox。

 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() 方法的循环中再次清除和添加项目(如果项目计数不为空),但它没有奏效。既不隐藏也不显示。我不想再次打开文件夹浏览器。它必须自动发生。

【问题讨论】:

    标签: c# winforms checkedlistbox


    【解决方案1】:

    您没有从控件中删除项目:

    if (dialogResult == DialogResult.Yes)
    {
      File.Delete(item);
      checkedListBox1.Items.Remove(item);
    }
    

    最好在此类操作周围放置一些 Try...Catch 块。

    【讨论】:

    • 无法修改foreach循环内的项目
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2015-06-04
    相关资源
    最近更新 更多