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 がロックされる可能性があります。その場合、 a を使用し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;
}
于 2012-06-29T16:55:19.570 に答える