我按下一个按钮并列出我给定路径中的所有文件都出现在列表框中。
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));
我希望能够从列表中选择一个文件,并在列表框下方的文本框中打开它的内容。
答案 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;
}