使用箭头键在控制台中导航

发布于 2024-11-25 04:14:27 字数 389 浏览 1 评论 0原文

我正在制作菜单。我想使用箭头键从列表中进行选择。

char move;

do
{
    move = (char)_getch();
    if (move == 38)
    {
         // Move Indicator Up   
    }
    else if (move == 40)
    {
         // Move Indicator Down
    }
}
while (move != 13);

我是否对向上和向下键使用了错误的 ASCII 值?

已解决

我将 (char)_getch() 替换为 (int)_getch() 并将 char move 替换为 int move 然后38和40到??和 80

Im making a menu. I want to use arrow keys to select from my list.

char move;

do
{
    move = (char)_getch();
    if (move == 38)
    {
         // Move Indicator Up   
    }
    else if (move == 40)
    {
         // Move Indicator Down
    }
}
while (move != 13);

Am i using the wrong ascii values for up and down keys?

SOLVED

i replaced (char)_getch() to (int)_getch() and char move to int move
then 38 and 40 to ?? and 80

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

辞别 2024-12-02 04:14:27

好像您正在 DllImporting msvcrt.dll 来使用 _getch()

尝试使用 Console.ReadKey()

ConsoleKeyInfo keyInfo = Console.ReadKey();
if (keyInfo.Key == ConsoleKey.UpArrow) {

} else if (keyInfo.Key == ConsoleKey.DownArrow) {

} ...

Seems like you're DllImporting msvcrt.dll to use _getch()

Try using Console.ReadKey()

ConsoleKeyInfo keyInfo = Console.ReadKey();
if (keyInfo.Key == ConsoleKey.UpArrow) {

} else if (keyInfo.Key == ConsoleKey.DownArrow) {

} ...
源来凯始玺欢你 2024-12-02 04:14:27

如果我们谈论的是 WinForms 应用程序,我建议您使用 Control.KeyDown 事件
“Console.Read()”不适用于 WinForms 应用程序。

更新
C# 中控制台应用程序使用箭头键进行菜单导航的示例。 >>> 示例 1 示例 2

In case we are talking about a WinForms application i would recommend you to use the Control.KeyDown Event.
"Console.Read()" doesn't work for WinForms applications.

Update
Example for menu navigation with arrow key for console application in C#. >> Sample 1 Sample 2

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文