我知道这个问题可能牵强,但如果可以使用此功能,那就太好了。我想在播放器书写时更改文本的颜色,因此,如果键入某些关键字,它们将更改为某种颜色。
我知道您可以更改光标的位置,但是我不知道这对更改颜色是否有帮助。我也知道您可以执行Console.Clear,但如果可能的话,我不想这样做,因为从那时起,我必须保存字符串并重新编写所有字符串,并且该字符串不适用于我的程序。
简短的回答:通常不,因为标准输出历来是一种只写介质(想想1960年代的电传打印机)。
复杂的答案:是的,这要感谢的魔力\r
。
基本上,您会阅读用户在每次击键的基础上键入的内容并自己进行跟踪(也许在中StringBuilder
),然后,如果用户键入了魔术字,则使用擦除先前打印的行\r
(这会移动插入符号到控制台的第一列而不创建新行),然后覆盖以前在此处打印的内容,但Console.ForegroundColor
在重新打印之前进行设置。
您不需要自己手动打印每个按键(直到用高亮重新打印它),因为Console.ReadKey
这不会干扰控制台窗口的其他正常操作及其本地回显行为。
这很简单:
StringBuilder sb = new StringBuilder();
while( true ) {
ConsoleKeyInfo key = Console.ReadKey();
if( !Char.IsControl( key.KeyChar ) ) {
sb.Append( key.KeyChar );
if( sb.ToString() == "magic!" ) {
Console.Write("\r");
Console.ForegroundColor = ConsoleColor.Blue;
Console.Write( sb.ToString() );
Console.ResetColor();
}
} else {
sb.Length = 0;
}
}
该代码是错误的且不完整,但是我认为它演示了基本概念。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句