Windows Forms中简单if语句逻辑异常问题求助
问题原因分析
你的代码核心问题在于**charNumber的初始值和递增逻辑的位置**:
- 初始状态下
charNumber = 0,第一次触发textBox1_KeyPress事件时,charNumber >= 2的条件不成立,不会进入if代码块,charNumber也不会被递增。 - 后续每次按键触发事件时,
charNumber始终保持为0,永远满足不了>=2的条件,自然不会执行任何消息框提示和换行逻辑。
而当你把条件改成charNumber <= 2时:
- 第一次按键时
charNumber=0满足条件,进入代码块执行消息框,随后charNumber被递增到1; - 第二次按键时
charNumber=1满足条件,再次进入代码块,递增到2; - 第三次按键时
charNumber=2满足条件,执行换行逻辑后递增到3; - 第四次按键时
charNumber=3不再满足<=2,但此时你已经看到了预期的触发效果。
额外优化建议
如果你的需求是每输入2个字符就换行,正确的逻辑应该是在每次按键时先递增计数,再判断条件,比如:
int charNumber = 0; private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { // 先计数当前输入的字符 charNumber++; // 每2个字符换行 if (charNumber % 2 == 0) { textBox1.AppendText(Environment.NewLine); } }
内容的提问来源于stack exchange,提问作者Programmable Physics
相关产品推荐
相关产品推荐

