当文本框处于焦点时,如何在点击可链接/按钮时停止文本框离开事件?
我有一个文本框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
}
正如我前面提到的,链接标签有不同之处,我无法在文本框上操作时禁用或隐藏它。
一个观察是, 当我点击链接标签时,首先保留文本框的事件,然后点击链接标签的点击事件,这样我们就无法在链接上执行任何逻辑(如取消订阅文本框或其他事件)标签的点击事件 - 就像我们不想要的验证过程一样。
答案 0 :(得分:1)
当您点击link label
时,它会成为焦点控制。你可以做的是 - 在textbox1_leave
事件处理程序中找到对表单的集中控制。如果不 link label
,则只应填充textbox2
的填充建议功能。
此链接应有助于您找到对表单的集中控制 - What is the preferred way to find focused control in WinForms app?