【问题标题】:Go back to the main menu at any point during a method在方法期间的任何时候返回主菜单
【发布时间】:2021-03-21 05:45:12
【问题描述】:

如果用户正在添加客户,他们可能会出于任何原因决定要返回。当用户输入新的详细信息时,我希望他们能够随时按“Esc”按钮返回主菜单。我已经在我的应用程序中实现了它,用户可以从菜单中选择一个数字,但这只是当他们到达程序中的某个点时。谁能帮忙?

【问题讨论】:

  • 您需要提供比这更多的代码,最好是负责您的菜单和客户创建的整个函数/例程。
  • 对不起伙计,这样更好吗?它们都是单独的方法。因此,当我添加患者时,我希望能够随时按“Esc”返回菜单
  • 所以不幸的是Console.ReadLine 不会捕获转义键,因为它基本上是在缓冲输入,直到遇到换行符\n。您可以执行ck = Console.ReadKey(); 之类的操作,然后检查if (ck.Key == ConsoleKey.Escape) return。唯一的问题是您需要自己构建字符串并最终编写自己的“ReadLineOrEscape”例程。
  • 啊该死的。好的,谢谢,我很欣赏评论。我想我可能只是让用户在方法开始时确认他们是否要继续将患者添加到系统中。
  • 我正在做一个概念证明,以便为您提供更多想法。很快就会发布。

标签: c#


【解决方案1】:

我建议将所有提示和读取输入封装为一种接受参数的方法。

public static string PromptUserForInput(string promptMessage, bool checkForEscape = true){...}

然后像@h0r53 说的那样使用readkey。我打算构建一个基本示例,但看起来已经可以找到一个 here。然后根据需要进行调整。

【讨论】:

  • 我自己正在写一些东西,但该帖子上接受的答案似乎是一个好方法。所以@Sog92 试试那个代码,如果readLineWithCancel 返回null,请记住return
  • 谢谢,非常感谢。我会写一些东西,让你知道进展如何(y)
  • 好吧,伙计们一直在玩它。我有 Esc 按钮工作,箭头键工作,但是当它到达字符串的开头时,左箭头不会禁用。有人知道为什么会发生这种情况吗?
  • 我讨厌迂腐,但这似乎是一个单独的问题。
  • 抱歉,我是新手...我会创建一个新帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-06-20
  • 2022-01-23
  • 2015-06-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多