[英]Why is a C# console processing multiline paste as Enter key presses?
我有一个处理按键的C#应用程序,当按Enter
键时会中断循环。 我遇到的问题是,当发生多行粘贴事件时,控制台会将换行解释为Enter键。
不会导致Enter
键按下的示例:
select something \n from somewhere \n where condition
导致Enter
键Enter
示例:
select something
from somewhere
where condition
有谁知道为什么会这样吗? 还有什么方法可以阻止这种情况而无需深入研究WndProc
来拦截Paste事件?
在Windows上,新行为\\ r \\ n。 当您按Enter键时,将输入这两个字符。 因此,如果将\\ r放在每个\\ n之前,则应将它们视为换行符。
嗨,看来有人使用Console.ReadLine()触发了循环中断。
https://msdn.microsoft.com/pl-pl/library/system.console.readline(v=vs.110).aspx
当您开始新行时,有效的循环中断不仅要按Enter键。
据我所知, Enter
键无法解析回\\r\\n
,因此我认为我们无法根据这些字符进行处理-但我还是可以得到一个提示(无论如何我都可以)如果用户通过询问Console.KeyAvailable
粘贴多行文本。
所以现在,我看一下是否确定(Key == ConsoleKey.Enter && Console.KeyAvailable == false)
以确定是否将其作为“正版”来处理。当按Enter键时)。
查看此提交以获取更多信息
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.