Windows窗体中的控制台输出

时间:2015-02-15 21:26:26

标签: c# windows forms console

我正在构建C#Windows窗体应用程序来搜索特定目录。搜索到的路径的输出被发送到控制台。如何将该方法导入Windows窗体?

        // Display the pathof each examined file.   
        foreach (var DisplayPath in fileList)
        {    
           Console.WriteLine(DisplayPath);
        } 

3 个答案:

答案 0 :(得分:0)

最简单的方法是将TextBox控件添加到表单并将其设置为多行。然后每行输出就像这样附加到控件......

textBox1.Text += DisplayPath;

...如果你更喜欢在顶部插入每一行,那么更容易看到输出,而不必经常滚动到TextBox的底部,然后这样做......

textBox1.Text = DisplayPath + textBox1.Textl

答案 1 :(得分:0)

谢谢菲尔。我现在看到的问题,我将整个路径列表存储到变量中。输出是一个路径块。我喜欢让每个路径“textBox1”动态变化,每次读取路径时,“textBox1”都会显示它。这就是我所拥有的:

        // Get IEnumerable (as in a list) on all files by recursively scanning directory.
        var fileList = Directory.EnumerateFiles(AppDirectory, "*", SearchOption.AllDirectories);           

        // Retrieve the size of files.
        long fileSize = (from file in fileList let fileInfo = new FileInfo(file) select fileInfo.Length).Sum();

        // Display the path and file of each examined file.       
        foreach (var DisplayPath in fileList)
        {                
            textBox2.Text += DisplayPath;
        }         

答案 2 :(得分:0)

我不确定我是否正确理解您的要求。您可以试试这个并告诉我们您正在搜索的是什么类似的东西:

(只是快速和肮脏的黑客一起作为起点):

using System.Threading.Tasks;
....

Task.Factory.StartNew(() =>
{
    // Get IEnumerable (as in a list) on all files by recursively scanning directory.
    var fileList = Directory.EnumerateFiles(AppDirectory, "*", SearchOption.AllDirectories);

    long totalSize = 0;

    // Retrieve the size of files.
    foreach (string path in fileList)
    {
        FileInfo fileInfo = new FileInfo(path);
        long size = fileInfo.Length;
        totalSize += size;

        Invoke((Action)(()  =>
        {
            listBox1.Items.Add(path + ": " + size.ToString());
            textBox1.Text = totalSize.ToString();

        }));

    }

});

这使用ListBox显示路径和大小,使用TextBox显示总大小。

Invoke调用很重要,因为它允许从线程访问GUI(而Task是另一个线程)。如果省略Invoke调用,则会出现跨线程异常。

在Stackoverflow上,您可以找到有关此问题的许多信息(从后台线程访问GUI以及处理此问题的许多不同(更好)方法。