【问题标题】:Validate input empty textbox c#验证输入空文本框c#
【发布时间】:2014-01-10 08:50:46
【问题描述】:

我正在尝试验证文本框的空值。如果文本框为空且失去焦点,则必须显示错误并且文本框必须再次获得焦点。

阅读此内容时,我遇到了 Validating 事件,可以通过 e.Cancel 取消该事件。但是,当我尝试执行此操作时,会收到一条错误消息。

我的代码:

private void CheckInput(CancelEventArgs e, TextBox tb)
{
   ErrorProvider error = new ErrorProvider();
   if (!string.IsNullOrEmpty(tb.Text))
   {
      error.SetError(tb, "*");
      e.Cancel = true;
   }

   else
   {
      error.SetError(tb, "");
   }
}

private void tbTitel_Validated(object sender, CancelEventArgs e)
{
    CheckInput(e, tbTitel);

}

我得到的错误如下:

错误 1 ​​'tbTitel_Validated' 没有重载匹配委托 'System.EventHandler'

我该如何解决这个问题?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    验证使用此委托:

    private void tbTitel_Validating(object sender, CancelEventArgs e)
    {
    }
    

    经过验证的事件使用这个:

    private void tbTitel_Validated(object sender, EventArgs e)
    {
    }  
    

    你想使用 Validating 事件(你应该将你的事件处理程序链接到验证事件,而不是 validated 事件。这样你可以取消它。

    您可能首先单击了验证,然后将事件处理程序名称复制/粘贴/选择到验证的事件中。 (设计师)

    【讨论】:

      【解决方案2】:

      发生错误,因为 tbTitel_Validated 在其签名中没有CancelEventArgs

      查看此线程以获取更多信息: No overload for 'method' matches delegate 'System.EventHandler'

      结论:改用tbTitel_Validating

      【讨论】:

        【解决方案3】:

        您应该使用Validating 事件来执行您的检查,而不是Validated 事件。

        这两个事件有不同的签名。 Validated 事件接收简单的 EventArgs 参数,而 Validating 事件接收可用于恢复焦点开关的 CancelEventArgs 参数。

        这么说,看来你的逻辑是错误的。

        // error if string is null or empty
        // if (!string.IsNullOrEmpty(tb.Text))
        if (string.IsNullOrEmpty(tb.Text))
        {
           error.SetError(tb, "*");
           e.Cancel = true;
        }
        else
        {
           error.SetError(tb, "");
        }
        

        【讨论】:

        • 谢谢。这确实是问题所在。然而,我现在确实有其他问题,但我会尽量解决它们。 :)
        【解决方案4】:

        始终在 Object.Validated 事件处理程序中使用验证语句

        同样:

        
         private void textBox1_Validated(object sender, EventArgs e)
                {
                    if (string.IsNullOrEmpty(textBox1.Text) || textBox1.Text == "")
                    {
                        MessageBox.Show("Please use valid data input!!");
                    }
                }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多