【问题标题】:ListBox Winform question列表框 Winform 问题
【发布时间】:2011-06-05 17:15:19
【问题描述】:

我使用 OpenFileDialog 类来打开并显示选择的文件名。

      List<string> paths;
    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
         label1.Text = "Now you can save the file paths or remove them from the list above";
         paths.Add(openFileDialog1.FileName);
         listBox1.DataSource=paths ;//Only one file is displayed in the listbox
         Refresh();

    }

我希望用户选择几个文件并在我拥有的列表框中显示他选择的所有文件。问题是每次只显示一个文件路径。有趣的是,我认为每当我使用 pahts.Add 时,都会添加新文件名,但实际上并非如此!?!

【问题讨论】:

    标签: c# winforms listbox


    【解决方案1】:

    尝试listBox1.DataSource = null;,然后将其设置为paths

    ListBox 很可能没有刷新,因为数据源“未更改”。 我们知道列表的内容已经改变,但是从ListBox的角度来看,对象是一样的。

    另一个更好的选择是使用BindingList&lt;string&gt;应该在添加项目时更新ListBox,而无需任何额外的摆弄。

    【讨论】:

    • 文件[i++] = openFileDialog1.FileName; listBox1.DataSource = files;// 我只是这样做了,t 确实有效。用一个字符串就可以了..用一个字符串列表就不行:(
    • 在将listBox1.DataSource = null; 设置为等于files 之前,您是否尝试过设置它?
    【解决方案2】:

    您必须在文件对话框中将Multiselect 设置为true,然后使用FileNames 属性:

    private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
    {
       string[] files = openFileDialog1.FileNames;
       paths.AddRange(files);
       listBox1.DataSource=paths;
       Refresh();
    }
    

    【讨论】:

    • +1 - 肯定是多文件选择的更好选择。如果用户想要从不同的位置选择多个文件,这需要与在 OP 中建立列表的方法相结合。
    猜你喜欢
    • 1970-01-01
    • 2017-08-28
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多