📜  如何统一获取键盘输入 - C# (1)

📅  最后修改于: 2023-12-03 15:09:14.057000             🧑  作者: Mango

如何统一获取键盘输入 - C#

在 C# 中,获取键盘输入的方式有多种。本文将介绍如何使用 Console 类、Win32 API 和 WPF 进行统一获取键盘输入。

使用 Console 类

在 C# 中,Console 类可以用于控制台应用程序中输出和接收用户输入。接收用户输入需要调用 Console.ReadLine() 方法。具体代码如下:

string input = Console.ReadLine();

Console.ReadLine() 方法会阻止程序执行,直到用户输入一条文本。用户输入的文本会作为方法的返回值。如果用户输入的文本中有多行,只会返回第一行。

使用 Win32 API

如果需要在 Windows 窗口程序中获取键盘输入,可以使用 Win32 API。具体代码如下:

using System.Runtime.InteropServices;

public partial class MainWindow : Window
{
    [DllImport("user32.dll")]
    public static extern int GetAsyncKeyState(Int32 i);

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        Int32 keyCode = e.KeyInterop.VirtualKeyFromKey(e.Key);
        Int32 state = GetAsyncKeyState(keyCode);

        if ((state & 0x8000) > 0)
        {
            // 按键按下
        }
        else
        {
            // 按键松开
        }
    }
}

在上面的代码中,GetAsyncKeyState() 方法可以获取按键状态。如果按键被按下,它的返回值的最高位会被设置为 1。

使用 WPF

在 WPF 应用程序中,可以使用 KeyDown 和 KeyUp 事件来获取键盘输入。具体代码如下:

public partial class MainWindow : Window
{
    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            // Enter 键被按下
        }
    }

    private void Window_KeyUp(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.Enter)
        {
            // Enter 键被松开
        }
    }
}

在上面的代码中,KeyDown 和 KeyUp 事件可以分别获取按键被按下和松开的状态。可以根据需要监听不同的按键事件,并在事件处理程序中执行相应的操作。

以上就是在 C# 中获取键盘输入的三种方式。可以根据实际需求选择最适合的方法。