如何读取用户写的内容(无需按 Enter 键) - 控制台 C#

2023-12-15

好吧,问题的标题可能有点不对劲,但我没有想到更好的,所以这里是:

我想阅读用户输入的“到目前为止”的内容,我需要它像这样工作:用户输入一些所需的数据,然后询问他/她是否想要完整的进度输出或只是结果。

当然,我可以调用 ReadLine 并查看他/她写了什么,但我希望它更整洁 - 在最终数据输入后,他/她会被要求提供详细信息。程序会等待大约 2 秒,然后“读取”用户写的内容。如果什么都没有,程序会正常运行,如果需要字符串,程序会提供详细的计算。

我希望它是清楚的

感谢您的解答

E:另一种方法是模拟enter在那 2 秒后按下按键,所以这个或那个都很好。

ANSWER对于任何对工作代码感兴趣的人。

bool timepassed = false;
bool detailmode = false;

long start = System.Environment.TickCount;

while (Console.KeyAvailable == false) // This loop will quit when KeyAvailable is true, i.e. a key is pressed (OR by the break command below)
{
    Console.Write("."); // write dot every 100ms to indicate progress
    System.Threading.Thread.Sleep(100);
    if (System.Environment.TickCount - start > 1250){
        timepassed=true; // if more than 1250ms passed, set flag break
        break;
    }
}

detailmode = !timepassed; // if time didnt pass, then user did press a key (and vice versa)->set detailmode
if (detailmode == true)
{
    Console.ReadKey(true); // hide the pressed key
    Console.WriteLine("\n\n-Detailni mod-"); // notify user about detailed mode
}

看看这两篇文章:

  • 控制台中的 KeyDown 事件
  • KeyAvailable 属性

特别是,MSDN 文章中有这样的例子:

class Sample 
{
    public static void Main() 
    {
    ConsoleKeyInfo cki = new ConsoleKeyInfo();

    do {
        Console.WriteLine("\nPress a key to display; press the 'x' key to quit.");

// Your code could perform some useful task in the following loop. However, 
// for the sake of this example we'll merely pause for a quarter second.

        while (Console.KeyAvailable == false)
            Thread.Sleep(250); // Loop until input is entered.
        cki = Console.ReadKey(true);
        Console.WriteLine("You pressed the '{0}' key.", cki.Key);
        } while(cki.Key != ConsoleKey.X);
    }
}

EDIT- 根据您实际对输入执行的操作,您可能希望将其累积在缓冲区中或StringBuilder.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何读取用户写的内容(无需按 Enter 键) - 控制台 C# 的相关文章

  • 为什么相同的代码在同一台计算机上的执行时间可能不同?

    我是 C 编程新手 我编写了代码并希望获得它的运行时 这就是我所做的 每次运行代码时 我都会得到不同的运行时值 这样对吗 或者我的代码有问题吗 int main int argc char argv time t start end sta
  • c和java语言中的换行符

    现在行分隔符取决于系统 但在 C 程序中我使用 n 作为行分隔符 无论我在 Windows 还是 Linux 中运行它都可以正常工作 为什么 在java中 我们必须使用 n 因为它与系统相关 那么为什么我们在c中使用 n 作为新行 而不管我
  • 在 C# 中创建具有单独列的分隔文本

    我一直在尝试在 C 中创建一个制表符限制的文本文件 以便数据正确显示在单独的列中 Firstname Lastname Age John Smith 17 James Sawyer 31 我尝试过 t 字符 但我得到的只是 Firstnam
  • 使用 Unity 在构造函数中使用属性依赖注入

    好的 我在基类中定义了一个依赖属性 我尝试在其派生类的构造函数内部使用它 但这不起作用 该属性显示为 null Unity 在使用 container Resolve 解析实例后解析依赖属性 我的另一种选择是将 IUnityContaine
  • 如何读取扩展文件属性/文件元数据

    因此 我按照教程使用 ASP net core 将文件 上传 到本地路径 这是代码 public IActionResult About IList
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开
  • 在 C# 中循环遍历文件文件夹的最简单方法是什么?

    我尝试编写一个程序 使用包含相关文件路径的配置文件来导航本地文件系统 我的问题是 在 C 中执行文件 I O 这将是从桌面应用程序到服务器并返回 和文件系统导航时使用的最佳实践是什么 我知道如何谷歌 并且找到了几种解决方案 但我想知道各种功
  • ASP.NET:获取自 1970 年 1 月 1 日以来的毫秒数

    我有一个 ASP NET VB NET 日期 我试图获取自 1970 年 1 月 1 日以来的毫秒数 我尝试在 MSDN 中寻找方法 但找不到任何东西 有谁知道如何做到这一点 从 NET 4 6 开始 该方法ToUnixTimeMillis
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 未定义的行为或误报

    我 基本上 在野外遇到过以下情况 x x 5 显然 它可以在早期版本的 gcc 下编译干净 在 gcc 4 5 1 下生成警告 据我所知 警告是由 Wsequence point 生成的 所以我的问题是 这是否违反了标准中关于在序列点之间操
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 如何编写一个同时需要请求和响应Dtos的ServiceStack插件

    我需要提供本地化数据服务 所有本地化的响应 Dto 都共享相同的属性 IE 我定义了一个接口 ILocalizedDto 来标记那些 Dto 在请求端 有一个ILocalizedRequest对于需要本地化的请求 Using IPlugin
  • 如何从main方法调用业务对象类?

    我已将代码分为业务对象 访问层 如下所示 void Main Business object public class ExpenseBO public void MakeExpense ExpensePayload payload var
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • Server.MapPath - 给定的物理路径,预期的虚拟路径

    我正在使用这行代码 var files Directory GetFiles Server MapPath E ftproot sales 在文件夹中查找文件 但是我收到错误消息说 给定物理路径但虚拟路径 预期的 我对在 C 中使用 Sys
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub

随机推荐

  • 函数结构不遵循的问题(PHP)

  • 带有消息“无法将类型(字符串)的变体转换为类型(双精度)的 EVariantTypeCastError 类”

    使用 Delphi 和 FastReport 在 Delphi 内调试时 紧接此行之后 我收到此错误消息
  • 在 Android 应用程序中解压 SD 卡上的压缩文件

    我有一个压缩密码保护的视频文件保存在 Android 模拟器的 SD 卡上 现在我想通过代码将该视频文件解压到SD卡上 我怎样才能做到这一点 有什么帮助或代码吗 提前致谢 import android util Log import jav
  • 如何在 Swift 3 中转置数组长度不等的矩阵

    我的数组是 Int 类型 array 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 我希望转置结果为 array 1 4 7 11 14 2 5 8 12 15 3 6 9 13 16 0 0 10 0 0
  • X-Frame-Options 标头在防止恶意框架方面有多有用?

    添加X Frame Options DENY响应标头有助于防止网页的恶意框架 作为一种解决方案 它肯定比客户端 JavaScript 解决方案更好 但它到底有多有用呢 所有 现代 浏览器都支持它 意图劫持您网站的黑客是否可以绕过它 埃里克
  • 更改网址而不刷新?

    我在互联网上发现了一个应用程序 当您单击其中的 A 链接时 它将重定向到 A 页面 而无需刷新整个位置并更改 url 地址栏 我知道这可能是因为 JQuery 可以访问客户端浏览器 Please帮我解决这个问题 使用历史API你可以做这样的
  • IE 浏览器中的 CSS 媒体查询支持

    请帮助我如何使用 IE 浏览器的媒体查询 我遇到过一个 jquery 库 http plugins jquery com project MediaQueries但我无法下载这个库 我建议不要使用 javascript 来模拟媒体查询 设置
  • 如何使用 django 将进程置于后台?

    我尝试了 os system os spwanl 等 但效果不佳 我需要从 django 应用程序执行一些后台进程 尝试使用celery 它最初就是为此目的而创建的 并且还支持调度任务
  • JS:导出 Array.prototype

    如果我想向 JavaScript 添加原型Array 有没有办法导出它 以便我可以将所有原型方法放入一个文件中 例如modules prototypes js 可不可能是export Array 或者我会在设置原型之前添加导出吗 如果你的代
  • iOS - 本地通知 - 自定义振动或振动时间更长

    我正在尝试构建一个像闹钟一样工作的 iPhone 应用程序 我正在使用 UILocalNotification Problem 我希望手机振动时间更长一些 但目前它仅振动一次 替代方法 是否可以使用自定义振动模式 http www pcwo
  • 在 bash 中将带有分号 (';') 的值赋给变量

    我试图用 sed 在 unix shell bash 上的字符串中转义 分号 当我直接执行而不将值分配给变量时它会起作用 那是 echo hello sed s 1 g hello 但是 当将上述命令分配给变量时 它似乎不起作用 resul
  • 将插入符号/光标位置设置为字符串值 WPF 文本框的末尾

    我尝试将插入符 光标位置设置为end当我第一次打开窗口时 WPF 文本框中的字符串值 当窗口打开时 我使用 FocusManager 将焦点设置在文本框上 似乎没什么作用 有任何想法吗 请注意 我使用的是 MVVM 模式 并且我的代码中仅包
  • Struts2 中的 NoSuchMethodException

    我有出生日期的文本字段 当用户输入无效日期 例如字符串 时 错误消息成功显示为 fielderror 但在我的控制台中 我收到此错误 java lang NoSuchMethodException Profile setBirthDate
  • jquery ajax 单击时调用,仅有效一次

    我有这个简单的 jquery 代码 单击时 它会获取标签的 URL 加载当前内容旁边的页面 滑动它并删除旧内容 页面的状态与以前完全相同 相同的元素没有额外的类或样式 问题是下一个 ajax 调用不起作用 也许我需要 unbind 一些东西
  • 反应点击处理程序并绑定它

    我有一个反应组件 我在其中迭代列表并创建行 每行都有一个删除按钮 单击删除按钮时 我想传递对该行中元素的引用 var TagTable React createClass onTagDelete function tagName this
  • 将空白节点添加到 Jena 模型

    我正在尝试使用一组现有的三元组填充耶拿本体模型 其中一些包含空白节点 我想忠实地维护这个新模型中的这些空白节点 但我无法找到将它们添加到耶拿模型中的方法 我一直在使用 Statement s ResourceFactory createSt
  • 多个 UIAlertView 问题

    我的代码有问题 我有两个 UIAlertView 代码块 一个带有取消和确定按钮 另一个用于制作 ImagePicker IBAction publicaPeticion if txtPeticion hasText UIAlertView
  • 为什么我在C#中无法设置这个ACL规则?

    我的 C 应用程序在 Vista SP1 上以提升的管理员身份运行 尝试使用以下代码设置以下规则 不会产生任何错误 但目录的 ACL 也不会发生任何更改 我缺少什么 public static void Main string args s
  • Websphere:不强制执行 web.xml 中的安全约束

    我正在尝试在我支持的非常旧的 J2EE 应用程序上启用 SSL 该应用程序在 WebSpehre 6 1 中运行 我已在运行应用程序的 WAS 配置文件中启用应用程序安全性 但下面的 web xml 配置仍然允许用户使用 HTTP 或 HT
  • 如何读取用户写的内容(无需按 Enter 键) - 控制台 C#

    好吧 问题的标题可能有点不对劲 但我没有想到更好的 所以这里是 我想阅读用户输入的 到目前为止 的内容 我需要它像这样工作 用户输入一些所需的数据 然后询问他 她是否想要完整的进度输出或只是结果 当然 我可以调用 ReadLine 并查看他