在丢失焦点时防止文本框离开事件

问题描述:

如何在Textbox处于焦点时单击可链接/按钮时停止文本框离开事件?在丢失焦点时防止文本框离开事件

我有一个文本框TextBox1。在离开事件时,我必须验证它的文本。并根据它的文本,我必须填充下一个文本框TextBox2的建议。

所以在这个过程中,当我点击一个链接标签[这是因为不同的原因],而TextBox1是焦点,它正在发射离开事件[这是显而易见的],并调用验证功能[这是不应该被称为 - 因为用户完成输入后没有离开文本框 - 它是由可链接点击触发的]。

我试图取消订阅在链接标签的点击事件上留下事件,但这并没有帮助,因为离开事件在第一时间被解雇。

在这种情况下应该做什么?

编辑: 发布相关的代码,

我有同一个事件处理两个文本框

private void txtBox_Leave(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     textBox.Visible = false; 

      #region TextBox 1 
      if (textBox.Equals(txtBox1)) 
      { 
       //Text Box 1 validation 
       //Populating Suggestions for TextBox2 
       //Passing focus on Textbox 2 
      } 
      #endregion 
      #region TextBox 2 
      else if (textBox.Equals(txtBox2)) 
      { 
       //Text Box 2 validation 
      } 
      #endregion 
    } 

正如我前面提到的,链接的标签是有不同的,我不能禁用或在文本框上操作时将其隐藏。

的一个现象是, 当我点击链接标签,文本框的Leave事件提高第一,之后点击链接标签的事件,所以我们不能执行任何逻辑(如退订文本框的假事件或别的东西)在Link-Label的点击事件上 - 就像我们不想要的那样完成验证过程。

+0

您是否正在使用的WinForms,WPF,...? (您应该将其添加到标签列表中)。 – samosaris

+0

@SamusArin我正在使用winForms。 – Amit

+0

您可以请发布相关代码,特别是TextBox离开事件处理程序和验证程序吗? – samosaris

当你点击link label时,它变成了集中控制。你可以做的是 - 在textbox1_leave事件处理程序中找到表单的重点控制。如果它是而不是link label那么应该只完成填充建议textbox2的功能。

这个环节应该是有助于你找出形式的集中控制 - What is the preferred way to find focused control in WinForms app?

+0

是的,我也在沿着这些线路来思考一些事情,听起来好像验证是从离开事件无条件地发射出去的,但仍然希望看到代码确保没有其他事情发生。 – samosaris

+0

@SamusArin,是的。验证正在无条件解雇。无论Arpit如何提出,在这种情况下,它都会帮助我。 – Amit