失去焦点时阻止TextBox离开事件

时间:2017-03-27 12:47:37

标签: c# winforms events 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
     }

正如我前面提到的,链接标签有不同之处,我无法在文本框上操作时禁用或隐藏它。

一个观察是, 当我点击链接标签时,首先保留文本框的事件,然后点击链接标签的点击事件,这样我们就无法在链接上执行任何逻辑(如取消订阅文本框或其他事件)标签的点击事件 - 就像我们不想要的验证过程一样。

1 个答案:

答案 0 :(得分:1)

当您点击link label时,它会成为焦点控制。你可以做的是 - 在textbox1_leave事件处理程序中找到对表单的集中控制。如果 link label,则只应填充textbox2的填充建议功能。

此链接应有助于您找到对表单的集中控制 - What is the preferred way to find focused control in WinForms app?