【问题标题】:Close button not working in windows forms application关闭按钮在 Windows 窗体应用程序中不起作用
【发布时间】:2013-11-05 20:32:06
【问题描述】:

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

    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 为空的消息框并再次提示我到窗口。当我在文本框中输入一些文本并单击取消按钮时,应用程序关闭。请提示如何解决此问题。提前致谢。 问候

【问题讨论】:

  • @RJ Lohan,我可以使用一个额外的按钮,将其命名为取消按钮并将原因验证设置为 false,或自动验证以禁用等,但我不想使用额外的按钮关闭应用程序,我只想使用控制框上的取消按钮。谢谢

标签: .net c#-4.0


【解决方案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
}

【讨论】:

  • 所以你的意思是我必须使用一个额外的按钮来关闭应用程序,并且必须隐藏控制框。
  • 您还可以实现 FormClosing 事件处理程序并将 e.Cancel 属性强制返回为 false。
  • 非常感谢先生,这就是我要找的。​​span>
【解决方案2】:
  1. 在您的表单中将属性 KeyPreview 设置为 True
  2. 添加一个按钮并编写ESC代码(例如Me.Dispose()
  3. 在您的表单中,从“CancelButton 属性列表”中选择您的按钮。
  4. 按钮必须始终为Visible = True 才能工作。如果您不想显示它,请将按钮放在任何其他对象后面或将其本地化为top = -100left = -1,例如。但是按钮总是必须是Visible = true

【讨论】:

  • 这是/曾经的问题:按钮必须始终为 Visible = true
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-02
    • 1970-01-01
    • 2016-10-07
    • 1970-01-01
    • 2013-07-02
    • 2021-05-18
    相关资源
    最近更新 更多