【问题标题】:Doing all validation at once一次完成所有验证
【发布时间】:2011-04-16 04:01:31
【问题描述】:

当尝试验证 Windows 窗体上的控件时,我意识到每个控件的 .validated() 都会在焦点丢失时触发。相反,我只想在底部按下按钮时进行验证,我该怎么做?

【问题讨论】:

    标签: c# vb.net winforms validation controls


    【解决方案1】:

    当您将 CauseValidation 属性设置为 true 时,当您离开控件时会触发 .Validating(以及更高版本:.Validated)事件。将其设置为 false 或根本不处理该事件。

    要进行表单级别的验证,请处理 .Closing 事件(比 Buttonclick 更好)并在那里编写您的逻辑。调用 Validating 事件处理程序毫无意义。

    【讨论】:

      【解决方案2】:

      将 AutoValidate 设置为 AutoValidate.Disable 并在按钮单击事件中调用 ValidateChildren() 方法(它将触发所有“验证/验证”事件)。 MSDN

      【讨论】:

        【解决方案3】:

        您可以查看Button_Click中的所有验证条件

        /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void button1_Click(object sender, EventArgs e)
            {
                if (!String.IsNullOrEmpty(txtUserName.Text))
                {
                    MessageBox.Show("Please enter user Name");
                }
                else if(condition)
                {
                 }
                 ...........
            }
        

        【讨论】:

        • 我相信 OP 是在谈论仅在按钮单击而不是焦点丢失时调用他的“验证器”
        猜你喜欢
        • 2012-12-09
        • 1970-01-01
        • 1970-01-01
        • 2017-10-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-14
        • 2019-06-29
        • 2016-10-31
        相关资源
        最近更新 更多