使用TextChanged事件禁用文本框

时间:2012-07-24 08:41:12

标签: c# textchanged disabled-control

我使用的表单需要复制粘贴的网址。我正在尝试使用textChanged事件,它将在粘贴后立即检查该URL,告诉用户它是有效还是无效。我还希望能够在发生这种情况时锁定文本框,并显示类似“正在处理...”的消息。

问题在于下面的代码,文本框永远不会被禁用,程序将执行checkUrl()方法,并且文本框永远不会被禁用,即使它是第一次执行(我假设它是但事实上有一个在它下面的函数调用正在搞乱某事或获得更高的优先级。)

如何在方法运行时将控件视觉禁用?

private void urlTxtBx_TextChanged(object sender, EventArgs e)
{
    urlTxtBx.Enabled = false;

    checkUrl();

    urlTxtBx.Enabled = true;
}

1 个答案:

答案 0 :(得分:1)

我认为这种情况正在发生,因为应用程序需要在禁用TextBox之前完成所有活动线程。请尝试以下代码:

private void urlTxtBx_TextChanged(object sender, EventArgs e)
{
    urlTxtBx.Enabled = false;
    Application.DoEvents();
    checkUrl();
    urlTxtBx.Enabled = true;
}

这将让UI更新。有关详细信息,请查看here