簡體   English   中英

Winforms Listbox數據綁定到目錄中文件列表

[英]Winforms Listbox databinding to list of files in a directory

我想將目錄中的文件列表綁定到列表框。

這是到目前為止我想要的代碼片段,lstFiles是一個ListBox,我想將Files屬性綁定到。 但是列表框為空。 請幫忙。

    public partial class Form1 : Form, INotifyPropertyChanged
    {
        private IList<FileInfo> _files = new List<FileInfo>();
        public IList<FileInfo> Files
        {
            get
            {
                return this._files;
            }
            set
            {
                if (value != this._files)
                {
                    this._files = value;
                    NotifyPropertyChanged("Files");
                }
            }
        }
        public Form1()
        {
            InitializeComponent();

            lstFiles.DataSource = Files;
            lstFiles.DataBindings.Add("Name", Files, "Files");
            lstFiles.DisplayMember = "Name";
        }

        private void btnStartPath_Click(object sender, EventArgs e)
        {
            var dialog = new FolderBrowserDialog();
            var result = dialog.ShowDialog();
            if (result == DialogResult.OK)
            {
                txtStartPath.Text = dialog.SelectedPath;
            }
        }

        private void btnFind_Click(object sender, EventArgs e)
        {
            Files = new DirectoryInfo(txtStartPath.Text).EnumerateFiles().ToList();
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }
        #endregion
}

我看不到將文件添加到您的代碼列表中,

DirectoryInfo dinfo = new DirectoryInfo(@"C:\Directory");

文件類型

_files  = dinfo.GetFiles("*.txt");

然后

foreach( FileInfo file in Files )
{
   listbox1.Items.Add(file.Name);
}

您必須設置valuemember屬性。 我嘗試例如:

        IList<FileInfo> myList = new List<FileInfo>();
        FileInfo test1 = new FileInfo(@"G:\test.xls");
        myList.Add(test1);

        listBox1.DisplayMember = "Name";
        listBox1.ValueMember = "FullName";
        listBox1.DataSource = myList;

這按預期工作:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM