Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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# console.SetCursorPosition方法的替代方法_C#_Arrays_Loops_Console Application - Fatal编程技术网

C# console.SetCursorPosition方法的替代方法

C# console.SetCursorPosition方法的替代方法,c#,arrays,loops,console-application,C#,Arrays,Loops,Console Application,您好,我必须使用x和y坐标在控制台窗口的不同位置显示各种符号,但是我不允许使用console.SetCursorPosition()方法。这就是使用该方法的方式 string k="$"; string l="%"; Console.SetCursorPosition(30, 20); Console.Write(k); Console.SetCursorPosition(15, 6); Cons

您好,我必须使用x和y坐标在控制台窗口的不同位置显示各种符号,但是我不允许使用
console.SetCursorPosition()
方法。这就是使用该方法的方式

        string k="$";
        string l="%";

        Console.SetCursorPosition(30, 20);
        Console.Write(k);

        Console.SetCursorPosition(15, 6);
        Console.Write(l);

        Console.ReadLine(); 

我需要一种使用
Console.SetCursorPosition()
方法的方法。任何替代方案都会有帮助,我被告知使用它就像在多维数组中循环一样,但我没有取得任何进展。非常感谢advanced中的所有帮助

我认为您没有任何方法可以替换
SetCursorPosition
(还有
CursorLeft
CursorTop
属性)。但是,我知道当你写东西时,你不希望光标跳到窗口上。以下是一个供您选择的解决方案:

public static void WriteAt(int left, int top, string s){
   int currentLeft = Console.CursorLeft;
   int currentTop = Console.CursorTop;
   Console.CursorVisible = false;//Hide cursor
   Console.SetCursorPosition(left, top);
   Console.Write(s);
   Console.SetCursorPosition(currentLeft, currentTop);
   Console.CursorVisible = true;//Show cursor back
}
//Use it
WriteAt(30, 20, k);
WriteAt(15, 6, l);
关键是我们在改变光标位置之前隐藏光标并写入所有字符串,在写入字符串之后,我们将光标移回原来的位置并显示出来


注意:无论如何,对于限制您使用
SetCursorPosition
(看起来像是某种谜语/挑战:)的需求,您可以始终使用
Console.CursorLeft
Console.CursorTop
来更改光标位置。

看看这是否真的很有帮助。顺便说一下,是的,这个问题是我的编程教授提出的挑战