2012-03-23 76 views
0

我有一個Windows Form其中包含一個WebBrowser來顯示網頁。每當用戶按下Form以外時,就會觸發Form的「Deactivate」事件,我通過調用Form.Close()來處理該行爲,只要用戶在其外部單擊就會關閉Form
WebBrowser中的文本框自動完成觸發表單的激活事件?

這對於一些網頁的偉大工程,但不幸的是其他網頁有時包含HTML TextBox擁有的財產「autocomplete」設置爲true。每當用戶開始在網頁上(在WebBrowser組件中)輸入時,TextBox就開始爲用戶建議文本。

主要問題是,當用戶從建議中點擊任何文本時,表格的「Deactivate」事件被激發!!!所以Form不幸被關閉,這是我不希望它發生的行爲。

如何解決這個問題?我希望Form僅當使用點擊它之外才關閉,並且當用戶在WebBrowser內部單擊自動填充建議時不關閉。

例如,我怎麼能檢測到事件是由點擊一個建議引起的,以便我可以取消事件的處理程序?還是有另一種解決方案來防止在點擊時提示「Deactivate」?還是有另一種解決方案?

順便說一句,我正在使用Form.Show(),而不是Form.ShowDialog()

在此先感謝

回答

0

這可能是別的事情上,除了從文本框只是選擇 - 就像使用Modal Dialog

我嘗試下面的代碼,當我選擇了其中一條建議停用並沒有觸發。

private void Form1_Load(object sender, EventArgs e) 
{ 
     this.Deactivate += Form1_Deactivate; 
     AutoCompleteStringCollection acsc = new AutoCompleteStringCollection() 
     { 
       "Jan", "Feb", "March" 
     }; 
     textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
     textBox1.AutoCompleteCustomSource = acsc; 

} 
+0

正如我所看到的,您在表單中創建了一個文本框。但事實並非如此。我有一個包含webbrowser組件的表單,並且webbrowser URL被設置爲顯示一個頁面(任何網站的普通HTML頁面),並且HTML文本框的autocomplete屬性設置爲true。然後,如果您使用鼠標單擊從webbrowser組件中的此HTML文本框組件中選擇,它將觸發表單停用觸發器。 – 2012-03-23 22:43:48

+0

好的。你有沒有嘗試在解決方案中的鏈接[答案](http://stackoverflow.com/questions/1747562/application-deactivate-event) – 2012-03-23 22:48:46

+0

我會試一試並將結果反饋給你,謝謝你的幫幫我。 – 2012-03-23 22:53:13