0

因此,我不得不为一个小型 C# 项目使用 Listbox,并遇到了问题。列表框显示文件名,每次有人使用文件对话框添加项目时都会添加一个项目。问题是当第一个文件被添加时,什么都没有出现。但是当添加第二个文件时,它是一个空行。

这是一张图片来说明问题:

列表框的问题

现在,我如何摆脱第一个空行并将文件名正确添加到列表框的顶部?

这是我用来添加到列表框的代码。

// Set a global variable to hold all the selected files result
List<String> fullFileName;

private void addBtn_Click(object sender, EventArgs e)
{
    DialogResult result = fileDialog.ShowDialog(); // Show the dialog.
    if (result == DialogResult.OK) // Test result.
    {
       // put the selected result in the global variables
       fullFileName = new List<String>(fileDialog.FileNames);
       // add just the names to the listbox
       foreach (string fileName in fullFileName)
       {
           dllBox.Items.Add(fileName.Substring(fileName.LastIndexOf(@"\") + 1));
       }
   }
}

这是fileDialog的属性:

文件对话框

以及 dllBox 属性

1a1s 21

4

3 回答 3

1

尝试在列表框属性中将 DrawMode 更改为Normal而不是OwnerDrawFixed

于 2012-07-20T17:27:16.270 回答
0

试试这段代码,看看会发生什么。

private void button1_Click(object sender, EventArgs e)
{
    using (var dialog = new OpenFileDialog())
    {
        dialog.Multiselect = true;
        if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            listbox.Items.Clear();
            listbox.Items.AddRange(dialog.FileNames.Select(x => System.IO.Path.GetFileName(x)).ToArray());
        }
    }
}
于 2012-07-20T16:58:19.230 回答
0

不清楚。不确定您要在这里实现什么。您的代码中还有一些奇怪的东西(string file = ...从未使用过,fullFileName每次都会获得一个新实例,不知道在哪里fileDialog实例化......)。

尝试以下操作:

private void button1_Click(object sender, EventArgs e)
{
    // Adds the selected file to the list
    using (OpenFileDialog dlg = new OpenFileDialog
        {
            Multiselect = false
        })
    {
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            this.listBox1.Items.Add(Path.GetFileName(dlg.FileName));
        }
    }
}

private void button2_Click(object sender, EventArgs e)
{
    // Adds all selected files to the list
    using (OpenFileDialog dlg = new OpenFileDialog
    {
        Multiselect = true
    })
    {
        if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK)
        {
            foreach (var fileName in dlg.FileNames)
            {
                this.listBox1.Items.Add(Path.GetFileName(fileName));
            }
        }
    }
}
于 2012-07-20T17:03:43.873 回答