weixin_32076493 2017-06-07 06:56 采纳率: 0%
浏览 330

写了一个键盘练习小代码关于大小写有点问题

用char.ToUpper(c1)转换过大写了但是键盘小写输入依然无效图片

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 23:25
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,你使用了ToUpper()方法来将字符转换为大写字母。然而,在你的测试代码中,当你尝试将一个键盘上的小写字母(例如a)转换为大写时,它并没有被正确地转换。

    为了修复这个问题,你需要确保在调用ToUpper()之前,首先检查字符是否是小写字母。你可以通过比较字符的ASCII值来实现这一点。如果字符的ASCII值小于等于65(即a的ASCII值),那么它是小写字母;否则,它是大写字母。

    以下是修改后的代码:

    public partial class Forml : Form {
        char c, cl;
        int a = 0;
    
        Random roov = new Random();
        public Foral O { get; set; }
        timer 1 . Start O
        InitializeComponent O:
            KeyPreviev = true:
            KeyPress += new KeyPressEventHandler(Forsl_KeyPress);
    
            void Forsl_KeyPress(object sender, KeyPressEventArgs e) {
                if (KeyPreviev) {
                    c = e.KeyChar;
                    if (c >= 'a' && c <= 'z') {
                        // Check for upper case letter first
                        cl = Char.ToUpper(e.KeyChar);
                        labele.Text = String.Format("{0} ({1})", labe12.Text, cl);
                    } else {
                        // If not a lowercase letter, convert to uppercase and assign it back to c
                        cl = Char.ToUpper(c);
                        c = cl;
                        labele.Text = String.Format("{0} ({1})", labe12.Text, cl);
                    }
                    KeyPreviev = false;
                }
            }
    
            void timer_1_Tick(object sender, EventArgs e) {
                iAr.Seat(65.91);
                c = (char)iAr.Seat(65.91);
                labe12.Text = String.Format("Current seat is {0}", c);
            }
    }
    

    这个代码会先检查c是否是小写字母,如果是,则将其转换为大写字母并赋给变量cl。然后,它会将cl重新赋值给c,以便下一次按键处理时使用。如果你希望每次按键都执行这个过程,可以将KeyPreviev设置为true并在Forsl_KeyPress事件处理器中添加额外的逻辑来更新KeyPreviev状态。

    评论

报告相同问题?