2010-08-10 73 views
1

簡單的代碼C#winform應用程序(Visual Studio 2010中):AutoCompleteSource停止KeyPress事件?

一個簡單的形式在這裏一個文本框是按鍵事件:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) 
     { 
      // The keypressed method uses the KeyChar property to check 
      // whether the ENTER key is pressed. 


      if (e.KeyChar == (char)Keys.Return) 
      { 
       Process.Start("http://yahoo.com", null); 
      } 

     } 

工作正常,如果我在文本框中一些文本輸入和按回車,它打開我的默認網頁瀏覽器,並帶我到一個網站。

我需要將文本框更改爲autocompletemode = suggestappend和autocompletesource = customsource。然後我填滿它,像這樣:

private void Form1_Load(object sender, EventArgs e) 
     { 
      AutoCompleteStringCollection s = new AutoCompleteStringCollection(); 
      s.Add("Jon "); 
      s.Add("2 Jon"); 
      textBox1.AutoCompleteCustomSource = s; 
     } 

它做自動完成如右圖所示,當我在它與Jon談到了爲J型,但現在當我按下回車鍵它不fireoff KeyPress事件。它只是坐在那裏。我嘗試了一個突破點,當我輸入第一個字母J時,它觸發KeyPress事件。然後,當我從自動完成源中選擇字符串「Jon」,然後點擊輸入事件不再觸發。

困惑:)。

+0

在一個簡單的例子中證實了2K8中的相同錯誤。似乎很奇怪,我試着改變AcceptsReturn,CausesValidation等設置....沒有骰子。祝你好運。 – 2010-08-10 20:22:29

回答

1

看起來由於自動完成建議下拉列表正在處理返回鍵按鍵 - 您可以始終使用KeyDown事件,該事件在這種情況下仍然會觸發。

+0

同意,這應該在KeyDown處理。 – 2010-08-10 20:40:13