1

我正在通过验证和验证事件验证我的文本框,下面是我的代码

    private void tbms_Validating(object sender, CancelEventArgs e)
    {
        if (tbms.Text.Length==0)
        {
            MessageBox.Show("Ms is Empty");
            e.Cancel = true;
        }
    }

    private void tbms_Validated(object sender, EventArgs e)
    {
        MessageBox.Show("No Error");
    }

它工作得很好,但我面临的问题是如果文本框中没有文本,我想通过控制框上的取消按钮关闭应用程序,它会向我显示 Ms 为空的消息框并再次提示我到窗口. 当我在文本框中输入一些文本并单击取消按钮时,应用程序关闭。请提示如何解决此问题。提前致谢。问候

4

3 回答 3

1

关闭表单时也会进行验证。如果您的 Validating 事件将 e.Cancel 属性设置为 true,则默认 FormClosing 事件将阻止表单关闭。您可以像这样解决这个问题:

private void CancelButton_Click(object sender, EventArgs e) {
    this.AutoValidate = System.Windows.Forms.AutoValidate.Disable;
    this.Close();    // or this.DialogResult = DialogResult.Cancel
}
于 2013-11-05T20:39:26.380 回答
1
  1. 在您的表单中KeyPreview设置属性。True
  2. 添加一个按钮并编写 ESC 代码(例如Me.Dispose()
  3. 在您的表单中,从“CancelButton 属性列表”中选择您的按钮。
  4. 该按钮必须始终Visible = True起作用。如果您不想显示它,请将按钮放在任何其他对象的后面或将其本地化为top = -100 and left = -1,例如。但按钮始终必须是Visible = true
于 2017-09-10T13:40:19.070 回答
0

您需要在取消按钮上将“CausesValidation”属性设置为 false

于 2013-11-05T20:40:52.477 回答