私は単純な Windows フォームを持っています: 'Message' TextBox には Enter イベントと Leave イベントがあり、ユーザーはそのフィールドにのみ別の言語でテキストを入力できます。「送信」ボタンは、フォームの内容を送信します。ユーザーがメッセージを入力して [送信] をクリックすると、テキストボックスの Leave イベントがボタンの 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);
}
}
}