跳过从控制框关闭表单的验证

Posted

技术标签:

【中文标题】跳过从控制框关闭表单的验证【英文标题】:Skipping validation for closing the form from the controlbox 【发布时间】:2012-12-16 07:04:31 【问题描述】:

我有一个带有文本框的简单表单,我想让用户在关闭或跳过此控件之前在文本框中输入一些数据,但是当我处理验证事件时,我只能通过输入来关闭表单CauseValidation 属性设置为 true 的取消按钮。我的问题是,即使文本框中没有写入任何内容,如何启用控制框中的 X 按钮以关闭表单?通过添加 form_closure 处理程序,此按钮第二次起作用我点击了它,但是我可以只按一次 X 按钮来关闭表单吗?

这是我的 form.cs 文件:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;

    namespace Validation
    
        public partial class Form1 : Form
        
            public Form1()
            
                InitializeComponent();

            

            private void textBox1_Validating(object sender, CancelEventArgs e)
            

                if(textBox1.Text.Trim().Equals(string.Empty))
                
                e.Cancel=true;

                errorProvider1.SetError(textBox1,"Error");

                
                else
                    errorProvider1.SetError(textBox1,"");
            
       private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        
            textBox1.CausesValidation = false;
        
        
    

非常感谢

【问题讨论】:

【参考方案1】:

是的,试试这个。

  private void Form2_FormClosing(object sender, FormClosingEventArgs e)
        
            if (textBox1.CausesValidation)
            
                textBox1.CausesValidation = false;
                Close();
            
        

【讨论】:

您对我的回答不满意,因为您没有点击“作为您接受的答案”。只是在开玩笑。欢迎! :)【参考方案2】:

除了上一个答案,这个方法也可以:

private void Input_FormClosing(object sender, FormClosingEventArgs e)
        


          e.Cancel = false;

        

【讨论】:

以上是关于跳过从控制框关闭表单的验证的主要内容,如果未能解决你的问题,请参考以下文章

jquery:颜色框关闭 iFrame onsubmit

windows 表单验证问题 (.net2.0 )

记一次开发过程中,iview遇到的一些坑以及解决办法

在模式引导程序中验证注册表单

模态框的理解 ,jQ: loading,进度条, 省级联动 ,富文本编辑器 表单验证 插件

选项卡关闭控制绕过验证 .NET