private void button1_Click(object sender, EventArgs e) { double number1, number2; if (double.TryParse(txtNumber1.Text, out number1) == false) { MessageBox.Show("输入的开始数值有误"); txtNumber1.Focus(); txtNumber1.SelectAll(); return; } if (double.TryParse(txtNumber2.Text, out number2) == false) { MessageBox.Show("输入的结束数值有误"); txtNumber2.Focus(); txtNumber2.SelectAll(); return; } if (number2 < number1) { MessageBox.Show("第一个数值不能大于第二个数值,请重新输入"); txtNumber1.Focus(); txtNumber1.SelectAll(); return; } double sum = 0; for (double i = number1; i <= number2; i++) { sum = sum + i; i++; } lbResult.Text = sum.ToString(); } private void txtNumber1_TextChanged(object sender, EventArgs e) { lbResult.Text = ""; } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } //sender中存的就是对应控件触发事件的对应控件对象。object是一个所有子类都可以访问的父类。每个控件都对应了一个类 private void txtNumber1_KeyPress(object sender, KeyPressEventArgs e) //keypress事件 { TextBox txtNumber1 = sender as TextBox; //父类转子类 有了这一句才能实现对该窗体所有textbox都使用阻止输入0的功能 if (e.KeyChar < '0' || e.KeyChar > '9')//条件的作用是阻止用户输入ascii表中对应的码 只管说就是只能输入数字 { e.Handled = true; } //textbox属性中的selectionstart 如果是选中一段文本,则为起始位置,如果没有选中,则指示光标位置。 //注意!第一个位置为0 if (txtNumber1.SelectionStart == 0 && e.KeyChar == '0')//如果用户光标在第一个位置最前面并且输入0,就阻止用户输入 { e.Handled = true; } if (e.KeyChar == 8) //判断用户输入的是退格键 { e.Handled = false; //取消e.handled阻止用户输入的功能 } }