Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从StreamReader文件设置位置_C#_Console Application - Fatal编程技术网

C# 如何从StreamReader文件设置位置

C# 如何从StreamReader文件设置位置,c#,console-application,C#,Console Application,好吧,事情是这样的。我试图从StreamReader文件中创建位置。我也已经尝试使用带有函数的Console.SetCursorPosition,但它只在文件文本的第一行更改。我的问题是,如何确定文件中所有行的位置。这是我的档案: N01 Chicken Nugget 20000 0 N02 Tempe Nugget 15000 0 N03 Tofu Nugget 15000 0 这是输出,它不是显示N字导致在左框隐藏。及 这是我的密码 na

好吧,事情是这样的。我试图从
StreamReader
文件中创建位置。我也已经尝试使用带有函数的
Console.SetCursorPosition
,但它只在文件文本的第一行更改。我的问题是,如何确定文件中所有行的位置。这是我的档案:

 N01    Chicken Nugget  20000   0
 N02    Tempe Nugget    15000   0
 N03    Tofu Nugget     15000   0
这是输出,它不是显示N字导致在左框隐藏。及

这是我的密码

namespace Nugget
{
    class case1
    {
        public void cs1()
        {
            Console.Clear();
            Console.WriteLine("╔═══════════════════════════════════════════════════════════════════════════════════════╗");
            Console.WriteLine("║ProID\tProduct Name\tPrice\tStock\t\t\t\t\t\t\t║");
            Console.WriteLine("╠═══════════════════════════════════════════════════════════════════════════════════════╣");
            StreamReader objReader = new StreamReader(@"E:\CCIT\Semester 2\Q1\Project 1\AbsolutlyRealGetNugget\Nugget.txt");
            string sLine = "";
            ArrayList arrText = new ArrayList();
            while (sLine != null)
            {
                sLine = objReader.ReadLine();
                if (sLine != null)
                    arrText.Add(sLine);
            }
            objReader.Close();
            foreach (string sOutput in arrText)
            Console.WriteLine(sOutput);
            Console.SetCursorPosition(0, 4);
            Console.WriteLine("║");
            Console.SetCursorPosition(0, 5);
            Console.WriteLine("║");
            Console.SetCursorPosition(0, 6);
            Console.WriteLine("║");
            Console.SetCursorPosition(88, 4);
            Console.WriteLine("║");
            Console.SetCursorPosition(88, 5);
            Console.WriteLine("║");
            Console.SetCursorPosition(88, 6);
            Console.WriteLine("║");
            Console.WriteLine("╚═══════════════════════════════════════════════════════════════════════════════════════╝\n");
        }
    }
}
我还尝试将Console.SetCursorPosition与函数一起使用,但是 它仅在文件文本的第一行更改

您当前的
foreach
循环代码:

foreach (string sOutput in arrText)
Console.WriteLine(sOutput);
Console.SetCursorPosition(0, 4);
... more code ...
没有任何括号
{
}
,这意味着只有
foreach
行下方的行被重复。要使整个块在每次迭代中重复,请插入如下括号:

foreach (string sOutput in arrText)
{
    Console.WriteLine(sOutput);
    Console.SetCursorPosition(0, 4);
    ... more code ...
}
话虽如此,我还是这样说:

    static void Main(string[] args)
    {
        string nugget = @"C:\Users\mikes\Documents\Nugget.txt";
        string[] arrText = File.ReadAllLines(nugget);

        int menuWidth = 89;
        string bar = new string('═', menuWidth - 2);

        Console.Clear();
        Console.WriteLine("╔" + bar + "╗");
        Console.Write("║ProID\tProduct Name\tPrice\tStock");
        Console.SetCursorPosition(menuWidth - 1, Console.CursorTop);
        Console.WriteLine("║");
        Console.WriteLine("╠" + bar + "╣");

        foreach (string sOutput in arrText)
        {   
            Console.Write(sOutput);
            Console.SetCursorPosition(0, Console.CursorTop);
            Console.Write("║");
            Console.SetCursorPosition(menuWidth - 1, Console.CursorTop);
            Console.WriteLine("║");
        }

        Console.WriteLine("╚" + bar + "╝");
        Console.WriteLine("");
        Console.ReadLine();
    }
请注意,我同时使用了
Console.WriteLine()
Console.Write()
。后一种方法将输出到控制台,而不使用行终止符,从而将光标留在相同的行上。然后,我们可以通过
控制台将光标移动到菜单的右边缘,在同一行上。CursorTop
,并使用以下命令绘制垂直条:

Console.SetCursorPosition(menuWidth - 1, Console.CursorTop);
Console.WriteLine("║");
这产生了以下输出:

╔═══════════════════════════════════════════════════════════════════════════════════════╗
║ProID  Product Name    Price   Stock                                                   ║
╠═══════════════════════════════════════════════════════════════════════════════════════╣
║N01    Chicken Nugget  20000   0                                                       ║
║N02    Tempe Nugget    15000   0                                                       ║
║N03    Tofu Nugget     15000   0                                                       ║
╚═══════════════════════════════════════════════════════════════════════════════════════╝

欢迎来到StackOverflow!也许只是我,但我真的不明白你在要求什么。你到底想达到什么目的?你期待什么,结果是什么?请显示您尝试的代码以及导致问题的代码。您可以查看一下,并尝试提供一个。我编辑了你的问题,以便读者可以直接看到屏幕截图,可能会对你有所帮助,但出于某种原因,你再次删除了该截图。哦,谢谢提醒,我不知道,改天当我提问时,我会描述更多细节。我已经添加了我的源代码和我的期望