我陷入了一个问题,需要投入。这是描述——
我有一个txtPenaltyDaysWindows 窗体 C#
private void txtPenaltyDays_TextChanged(object sender, EventArgs e)
{
if(Convert.ToInt16(txtPenaltyDays.Text) > 5)
{
MessageBox.Show("The maximum amount in text box cant be more than 5");
txtPenaltyDays.Text = 0;// Re- triggers the TextChanged
}
}
Run Code Online (Sandbox Code Playgroud)
但是我遇到了问题,因为这会触发 2 次。因为将文本值设置为 0。我的要求是它应该只触发一次并将值设置为 0。
任何建议都深表感谢。
当您发现无效值时,只需禁用事件处理程序,通知用户然后重新启用事件处理程序
private void txtPenaltyDays_TextChanged(object sender, EventArgs e)
{
short num;
if(Int16.TryParse(txtPenaltyDays.Text, out num))
{
if(num > 5)
{
txtPenaltyDays.TextChanged -= txtPenaltyDays_TextChanged;
MessageBox.Show("The maximum amount in text box cant be more than 5");
txtPenaltyDays.Text = "0";//
txtPenaltyDays.TextChanged += txtPenaltyDays_TextChanged;
}
}
else
{
txtPenaltyDays.TextChanged -= txtPenaltyDays_TextChanged;
MessageBox.Show("Typed an invalid character- Only numbers allowed");
txtPenaltyDays.Text = "0";
txtPenaltyDays.TextChanged += txtPenaltyDays_TextChanged;
}
}
Run Code Online (Sandbox Code Playgroud)
另请注意,我已删除 Convert.ToInt16,因为如果您的用户键入字母而不是数字并使用 Int16.TryParse,它会失败
| 归档时间: |
|
| 查看次数: |
31192 次 |
| 最近记录: |