繁体   English   中英

为什么C#控制台在按Enter键时处理多行粘贴?

[英]Why is a C# console processing multiline paste as Enter key presses?

我有一个处理按键的C#应用​​程序,当按Enter键时会中断循环。 我遇到的问题是,当发生多行粘贴事件时,控制台会将换行解释为Enter键。

不会导致Enter键按下的示例:

select something \n from somewhere \n where condition

导致EnterEnter示例:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM