[英]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.