C#只列出ListBox中的NAMES

时间:2018-03-27 19:18:34

标签: c#

所以我正在进行一些测试,当使用列表框时,它会显示“C:/Test/Text.txt”,但我想要它说Text.txt。所以我目前有

ContentValues contentValues = new ContentValues();
contentValues.put(COLUMN_DAYS, days);
contentValues.put(tasbeehName, count);

sqLiteDatabase.update(TABLE_TASBEEH_COUNT, values, "DAYS = date('now')" , null);
sqLiteDatabase.setTransactionSuccessful();
sqLiteDatabase.endTransaction();

并在ListBox中显示private void FlatButton3_Click(object sender, EventArgs e) { ListBox1.Items.Clear(); string folder = @"C:/Aatrox"; string[] txtfiles = Directory.GetFiles(folder, "*.txt"); string[] luafiles = Directory.GetFiles(folder, "*.lua"); foreach (var item in folder) { ListBox1.Items.Add(Path.GetFileName(Convert.ToString(txtfiles))); } }

任何帮助?

5 个答案:

答案 0 :(得分:3)

如果你想要.lua个文件和.txt文件(并且你使用的是.NET 4.5或更高版本),你可以使用一些LINQ来获取你想要的文件:

ListBox1.Items.Clear();
var files = Directory.EnumerateFiles(@"C:/Aatrox")
                .Where(file => file.ToLower().EndsWith("lua") 
                       || file.ToLower().EndsWith("txt"));
foreach(var file in files)
{
    ListBox1.Items.Add(Path.GetFileName(file));
}

使用像这样的非LINQ方法实际上可能更快:

ListBox1.Items.Clear();
foreach(var file in Directory.EnumerateFiles(@"C:/Aatrox"))
{
    string extension = Path.GetExtension(file);
    if(string.Compare(extension, ".lua", true) == 0 
       || string.Compare(extension, ".txt", true) == 0)
    {
        ListBox1.Items.Add(Path.GetFileName(file));
    }
}

答案 1 :(得分:2)

感谢@maccettura我得到了它。

private void FlatButton3_Click(object sender, EventArgs e)
{
    ListBox1.Items.Clear();

    string folder = @"C:/Aatrox";
    string[] txtfiles = Directory.GetFiles(folder, "*.txt");
    string[] luafiles = Directory.GetFiles(folder, "*.lua");

    foreach (var item in txtfiles)
    {
        ListBox1.Items.Add(Path.GetFileName(item));
    }
}

答案 2 :(得分:0)

这远非最有效的答案,但希望能帮助您理解。

    var filenames = Directory.GetFiles("C:/Aatrox", "*.txt").ToList();
    filenames.AddRange(Directory.GetFiles("C:/Aatrox", "*.lua"));
    foreach (var filename in filenames)
        listBox.Add(Path.GetFileName(filename));

答案 3 :(得分:0)

您正在循环使用文件夹变量并使用txtfiles变量而不是item。此外,将String转换为String也是无用的。也许你的代码应该是:

private void FlatButton3_Click(object sender, EventArgs e)
{
    ListBox1.Items.Clear();

    string folder = @"C:/Aatrox";
    string[] txtfiles = Directory.GetFiles(folder, "*.txt");
    string[] luafiles = Directory.GetFiles(folder, "*.lua");

    foreach (var item in txtfiles)
    {
        ListBox1.Items.Add(Path.GetFileName(item));
    }
}

额外:如果你还要列出* .lua文件,你必须做另一个foreach循环。

答案 4 :(得分:0)

var files = Directory.GetFiles(path, "*.*", SearchOption.Recursive);
var filter = files.Where(file => file.Contains(".txt") || file.Contains(".lua"));

foreach(var file in filter)
     listbox.Items.Add(new FileInfo(file).Name);

代码非常简单,抓取目录中的文件,使用Linq过滤掉你想要的扩展名。然后循环,转换为FileInfo以使用使用短名称的Name属性。