我想在列表框中选中后在文本框中显示文件的内容

时间:2012-06-29 16:44:02

标签: c# silverlight

我按下一个按钮并列出我给定路径中的所有文件都出现在列表框中。

        IEnumerable<string> files = System.IO.Directory.EnumerateFiles(@"C:\Desktop\Stuffs\Dummi", "*.*", System.IO.SearchOption.AllDirectories);
        foreach (var f in files)
        {

            lbz.Items.Add(String.Format("{0}", f)); 

我希望能够从列表中选择一个文件,并在列表框下方的文本框中打开它的内容。

2 个答案:

答案 0 :(得分:0)

这会将所选项目中命名的文件内容加载到文本框中:

TextBox1.Text = File.ReadAllText(lbz.SelectedItem.ToString())

这是最简单,最简单的方法。它适用于较小的文件,但如果您需要加载的文件较大,则加载文件可能需要很长时间,并且在加载时会锁定UI。如果这是一个问题,您需要在单独的线程上完成加载文件的工作。

答案 1 :(得分:0)

SteveDog's answer应该适用于小文件。

如果您有大文件,这可能会在读取文件内容时锁定UI。在这种情况下,您可以使用BackgroundWorker来读取文件:

ListBox lbz;
TextBox tbx;
BackgroundWorker bgw;

void lbz_SelectedIndexChanged(object sender, EventArgs e)
{
    if (!bgw.IsBusy)
    {
        bgw.RunWorkerAsync(lbz.SelectedItem.ToString());
    }
}

void bgw_DoWork(object sender, DoWorkEventArgs e)
{
    e.Result = File.ReadAllText((string)e.Argument);
}

void bgw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    tbx.Text = (string)e.Result;
}