用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状态。解决 无用评论 打赏 举报