文本框离开事件禁止按钮单击
我有一个简单的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