添加项目时,C#中的列表框是否为空行?

时间:2012-07-20 16:47:40

标签: c# winforms listbox string

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

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

The problem with the 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的属性:

FileDialog

以及dllBox属性

1a1s 21

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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());
        }
    }
}

答案 2 :(得分: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));
            }
        }
    }
}