Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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.KeyAvailable-如何重置此布尔值?_C#_Boolean - Fatal编程技术网

C# Console.KeyAvailable-如何重置此布尔值?

C# Console.KeyAvailable-如何重置此布尔值?,c#,boolean,C#,Boolean,在这里使用C。我正在创建一个控制台应用程序。我有两种方法可以滚动文本,而不是直接在屏幕上显示。一个与Console.Write()相同,另一个与Console.WriteLine()类似。区别在于每个字符之间有30毫秒的延迟。我试着让你按下一个键,每个字符之间的延迟速度达到5毫秒。问题是,一旦你按下一个键,Console.KeyAvailable是真的并且不会重置,因此它只会延迟5毫秒。有没有办法将此设置回false,或者我可以做些其他事情来完成此操作?这是我的密码: //Console

在这里使用C。我正在创建一个控制台应用程序。我有两种方法可以滚动文本,而不是直接在屏幕上显示。一个与Console.Write()相同,另一个与Console.WriteLine()类似。区别在于每个字符之间有30毫秒的延迟。我试着让你按下一个键,每个字符之间的延迟速度达到5毫秒。问题是,一旦你按下一个键,Console.KeyAvailable是真的并且不会重置,因此它只会延迟5毫秒。有没有办法将此设置回false,或者我可以做些其他事情来完成此操作?这是我的密码:

    //Console.Write() version
    static void RPGWrite(string write)
    {
        char[] writearray = write.ToCharArray();
        int writearraycount = writearray.Count();
        for (int x = 0; x < writearraycount; x++)
        {
            Console.Write(Convert.ToString(writearray[x]));
            if (Console.KeyAvailable == false)
                System.Threading.Thread.Sleep(30);
            else
                System.Threading.Thread.Sleep(5);                   
        }            
    }
    //Console.WriteLine() version
    static void RPGWriteLine(string write)
    {
        char[] writearray = write.ToCharArray();
        int writearraycount = writearray.Count();
        for (int x = 0; x < writearraycount; x++)
        {
            Console.Write(Convert.ToString(writearray[x]));
            if (Console.KeyAvailable == false)
                System.Threading.Thread.Sleep(30);
            else
                System.Threading.Thread.Sleep(5);
        }
        Console.Write("\n");
    }
//Console.Write()版本
静态void RPGWrite(字符串写入)
{
char[]writearray=write.ToCharArray();
int writearraycount=writearray.Count();
对于(int x=0;x
[nkvu-将评论中的项目移至此处,以防对其他人有所帮助]

另外,如果设置为false,则实际上需要从流中读取密钥(例如,通过使用)


使用
Console.ReadKey(true)
将从流中读取一个字符,而无需回显到控制台供用户查看-请注意MSDN文档中关于单独按下Alt、Ctrl或Shift键的备注

这是最终为我工作的代码:

    //Console.Write() version
    static void RPGWrite(string write)
    {
        char[] writearray = write.ToCharArray();
        int writearraycount = writearray.Count();
        for (int x = 0; x < writearraycount; x++)
        {
            if (Console.KeyAvailable == false)
            {
                Console.Write(Convert.ToString(writearray[x]));
                System.Threading.Thread.Sleep(30);
            }
            else
            {
                Console.Write(Convert.ToString(writearray[x]));
                if (x < (writearraycount - 1))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 2))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 3))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 4))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                Console.ReadKey(true);
            }
        }           
    }
    //Console.WriteLine() version
    static void RPGWriteLine(string write)
    {
        char[] writearray = write.ToCharArray();
        int writearraycount = writearray.Count();
        for (int x = 0; x < writearraycount; x++)
        {
            if (Console.KeyAvailable == false)
            {
                Console.Write(Convert.ToString(writearray[x]));
                System.Threading.Thread.Sleep(30);
            }
            else
            {
                Console.Write(Convert.ToString(writearray[x]));
                if (x < (writearraycount - 1))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 2))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 3))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                if (x < (writearraycount - 4))
                {
                    x++;
                    Console.Write(Convert.ToString(writearray[x]));
                }
                Console.ReadKey(true);
            }
        }
        Console.Write("\n");
    }
//Console.Write()版本
静态void RPGWrite(字符串写入)
{
char[]writearray=write.ToCharArray();
int writearraycount=writearray.Count();
对于(int x=0;x
AFAIK,如果设置为false,则实际上需要从流中读取密钥(例如,通过使用)。我不能使用任何需要输入的方法。如果我这样做,它将完全停止并等待用户输入。这种方法应该保持书写。因此,如果我不能用KeyAvailable实现这一点,我的选项是什么?Console.ReadKey()有点可行,但问题是字符是从我按住的键显示的。do Console.ReadKey(true),那么。
Console.ReadKey(true)
应该会导致字符不会回显到窗口中(反正就是这么说的)