You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WinForm打字游戏实现键盘输入与给定字符串实时匹配校验方案问询

WinForm 打字游戏实时输入校验实现方案

WinForm 采用事件驱动架构,不能使用控制台的阻塞式Console.ReadKey()读键,也不能通过死循环阻塞UI线程,需要将输入校验逻辑迁移到键盘事件中实现,具体方案如下:

实现思路

  • 将原本方法内的局部状态变量(输入索引、错误计数、目标字符数组等)提升为类级别的字段,跨事件保存输入状态
  • 给输入控件(示例中为txt_user)绑定KeyPress事件,实时捕获用户输入的字符
  • 在事件回调中完成输入校验、状态更新、输入框渲染的逻辑

完整代码实现

1. 声明类级别状态字段

// 保存目标打字文本的字符数组
private char[] _targetCharArray;
// 当前输入的位置索引
private int _currentInputIndex = 0;
// 输入错误计数
private int _mistakeCount = 0;
// 拼接用户输入显示内容
private StringBuilder _inputDisplayBuilder;

2. 初始化打字游戏状态

替换你原本的TypingGameProper方法,用于游戏开始前重置状态:

void InitTypingGame(string targetString)
{
    _targetCharArray = targetString.ToCharArray();
    _currentInputIndex = 0;
    _mistakeCount = 0;
    _inputDisplayBuilder = new StringBuilder();
    txt_user.Clear();
}

3. 实现键盘输入校验逻辑

给txt_user控件绑定KeyPress事件,事件处理逻辑如下:

private void Txt_user_KeyPress(object sender, KeyPressEventArgs e)
{
    // 禁止控件默认输入行为,所有显示由手动控制
    e.Handled = true;
    // 已完成全部输入直接返回
    if (_currentInputIndex >= _targetCharArray.Length) return;

    if (e.KeyChar == _targetCharArray[_currentInputIndex])
    {
        // 输入正确,追加字符并移动索引
        _inputDisplayBuilder.Append(_targetCharArray[_currentInputIndex]);
        _currentInputIndex++;
    }
    else if (e.KeyChar == '\b')
    {
        // 退格操作,增加边界判断避免索引越界
        if (_currentInputIndex > 0)
        {
            _inputDisplayBuilder.Remove(_inputDisplayBuilder.Length - 1, 1);
            _currentInputIndex--;
        }
    }
    else
    {
        // 输入错误,计数+1
        _mistakeCount++;
        // 如需错误时也填充正确字符保留下行,不需要可删除
        _inputDisplayBuilder.Append(_targetCharArray[_currentInputIndex]);
        _currentInputIndex++;
    }
    // 更新输入框显示
    changeRichText(txt_user, _inputDisplayBuilder.ToString());
}

补充说明

  • 如果需要识别方向键、功能键等非字符按键,可改用KeyDown事件,通过KeyEventArgs.KeyCode判断按键类型
  • 可在错误输入时给对应字符设置红色样式,只要在changeRichText方法中对错误位置的字符单独设置SelectionColor即可
  • 如需禁止粘贴、右键修改输入内容,可将txt_user的ReadOnly属性设为true,不会影响键盘事件触发

内容的提问来源于stack exchange,提问作者rickiestRick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:04