listBox在重新编译程序之前不显示内容c#

时间:2016-04-09 12:35:04

标签: c# winforms visual-studio

我能够在列表框中显示来自目录的文件名的项目。在重新编译程序之前,不会显示新添加的项目。我试过“ListBox.Refresh()”,但它没有用。任何建议将不胜感激。谢谢

String rssUrl = "someUrlHere";

String rssWebsite = "Some website name here";

//Now, you can use a delimiter before storing your two values 

String rssUrlAndWebsite = rssUrl + "," + rssWebsite;

//Now you can store this using one key. 

//When you want to read them out, you can use your key to get the value and simply split using the delimiter and there, you will have two values!

1 个答案:

答案 0 :(得分:1)

ListBox(通常是您的程序)无法知道您是否将新文件添加到Notes目录中。此信息仅为文件系统所知。幸运的是,.NET Framework允许您使用名为FileSystemWatcher ....

的类通知您的程序这些事件

这是一个如何使用FileSystemWatcher类的实例在系统文件夹上实现某种监视的示例

ListBox lb = new ListBox();

void Main()
{
    FileSystemWatcher f = new FileSystemWatcher(@"d:\temp");
    f.NotifyFilter = NotifyFilters.FileName;    
    f.Created += new FileSystemEventHandler(watcher_Created);    
    f.EnableRaisingEvents = true;  

    Form fm = new Form();
    lb.Dock = DockStyle.Fill;
    foreach(string file in Directory.EnumerateFiles(f.Path))
        lb.Items.Add(Path.GetFileName(file));
    fm.Controls.Add(lb);
    fm.ShowDialog();
}


private void watcher_Created(object source, FileSystemEventArgs e) 
{ 
    string newFile = e.Name;
    if(!lb.Items.Contains(newFile))
        lb.Items.Add(newFile);

} 

请注意,我对原始代码进行了一些更改。如果您不需要完整的FileSystemInfo类,则不需要使用此类,但更简单的Directory类足以检索文件名。然后使用EnumerateFiles类构造循环,该类允许代码填充列表框而不填充文件数组。

(IE你可以使用LinqPad测试这段代码,不要试图在Visual Studio上运行它,它不会工作)