2013-03-29 38 views
0

我有一個簡單的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); 
     } 
    } 
} 

回答

0

的問題現在已經解決了。問題是由輸入語言的變化引起的。如果進入和離開處理程序做了其他的東西,然後點擊事件將正常啓動。因爲我需要改變輸入語言,所以我通過監視MouseDown,MouseClick和MouseUp事件來解決它,並且如果它不是自動生成的,就會生成一個點擊。

0

我有同樣的問題。當我改變輸入語言,然後在離開事件時將其設置回默認值。當我點擊其他組件時,它不會點擊事件。我不得不點擊兩次。我與焦點有關的事情。 我改變了輸入語言之後,通過將焦點設置爲形式來解決它。 這裏是處理:

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

希望它可以幫助...