因此,我不得不将一个Listbox用于一个小型C#项目,并遇到了问题。列表框显示文件名,每当有人使用文件对话框添加项目时,就会添加一个项目。问题是当添加第一个文件时,什么都没有出现。但是当添加第二个文件时,它是一个空行。
这是一张说明问题的图片:
现在,我如何摆脱第一个空白行,并将文件名正确添加到列表框的顶部?
以下是我用来添加到列表框的代码。
// 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属性
答案 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));
}
}
}
}