文本框离开事件禁止按钮单击

我有一个简单的Windows窗体:'消息'文本框有输入和离开事件,以允许用户只能在该字段以另一种语言输入文本。 '发送'按钮发送表单内容。 用户填充消息并单击发送后,文本框的离开事件阻止按钮的Click事件发射。 我需要两个处理程序来运行。

以下是相关的代码:

private void Message_Enter(object sender, EventArgs e)
{
    inputLang = InputLanguage.CurrentInputLanguage;
    foreach (InputLanguage lang in InputLanguage.InstalledInputLanguages)
    {
        if (lang.LayoutName == "United States-International")
        {
            InputLanguage.CurrentInputLanguage = lang;
            break;
        }
    }
}

private void Message_Leave(object sender, EventArgs e)
{
    InputLanguage.CurrentInputLanguage = inputLang;
}

private void Send_Click(object sender, EventArgs e)
{
    string dest = ServerList.Text;
    string msg = Message.Text;
    if (dest.Length == 0 || msg.Length == 0 )
    {
        Log("Fill the destination server and the message");
        return;
    }
    if (context.SendMessage(dest, msg))
    {
        if (!ServerList.Items.Contains(dest))
        {
            ServerList.Items.Add(dest);
        }
    }
    else
    {
        if (ServerList.Items.Contains(dest))
        {
            ServerList.Items.Remove(dest);
        }
    }
}

问题现在已经解决了。 问题是由输入语言的变化引起的。 如果进入和离开处理程序做了其他的东西,然后点击事件将正常启动。 因为我需要改变输入语言,所以我通过监视MouseDown,MouseClick和MouseUp事件来解决它,并且如果它不是自动生成的,就会生成一个点击。


我有同样的问题。 当我改变输入语言,然后在离开事件时将其设置回默认值。 当我点击其他组件时,它不会点击事件。 我不得不点击两次。 我的事情与焦点有关。 在改回输入语言之后,我通过将焦点重新设置为形式来解决问题。 这里是处理程序:

void textBoxSearch_LostFocus(object sender, EventArgs e)
    {
        InputLanguage.CurrentInputLanguage = InputLanguage.DefaultInputLanguage;
        this.Focus();
    }

希望能帮助到你...

链接地址: http://www.djcxy.com/p/44933.html

上一篇: TextBox Leave Event suppresses Button Click

下一篇: Textbox SelectAll on tab but not mouse click