该列表框在文件名之前显示“ System.Windows.Controls.listboxitem”

时间:2019-08-11 21:32:05

标签: c#

当我要使列表框列出一个项目时,在文件名之前显示“ system.windows.controls.listboxitem”

我尝试使用Path.GetFileName,但无法正常工作

private void Button1_Click(object sender, EventArgs e)
        {
            string[] files = Directory.GetFiles(@"C:\media-directory", "*.mp3", SearchOption.AllDirectories);
            foreach (string f in files)
            {
                string entry = Path.GetFileName(f);
                var item = new ListBoxItem() { Content = entry, Tag = f };
                listBox1.Items.Add(item);
            }
        }

        private void ListBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selectedItem = listBox1.SelectedItem as ListBoxItem;
            string path = selectedItem.Tag.ToString();
            mediaplayer.URL = path;
        }

我希望输出只是文件名!

1 个答案:

答案 0 :(得分:1)

您应该为item对象定义自己的类,并覆盖ToString()函数。 根据{{​​1}}函数的返回值,您的项目将显示在ListBox中。

ToString()

添加新项目时,请使用:

    public class PathItem
    {
        public string Path { get; set; }

        public override string ToString()
        {
            return Path;
        }
    }

为了获得选择:

listBox1.Items.Add(new PathItem() { Path = Path.GetFileName(f) });