在丢失焦点时防止文本框离开事件
问题描述:
如何在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的点击事件上 - 就像我们不想要的那样完成验证过程。
答
当你点击link label
时,它变成了集中控制。你可以做的是 - 在textbox1_leave
事件处理程序中找到表单的重点控制。如果它是而不是那link label
那么应该只完成填充建议textbox2
的功能。
这个环节应该是有助于你找出形式的集中控制 - What is the preferred way to find focused control in WinForms app?
您是否正在使用的WinForms,WPF,...? (您应该将其添加到标签列表中)。 – samosaris
@SamusArin我正在使用winForms。 – Amit
您可以请发布相关代码,特别是TextBox离开事件处理程序和验证程序吗? – samosaris