0

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

        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)); 

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

4

2 回答 2

0

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

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

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

于 2012-06-29T16:48:44.160 回答
0

SteveDog 的答案应该适用于小文件。

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

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;
}
于 2012-06-29T16:55:19.570 回答