2012-03-23 12 views
0

Ich habe ein Windows Form, das eine WebBrowser enthält, um Webseiten anzuzeigen. Immer wenn der Benutzer außerhalb der Form drückt, wird das Form 's "Deactivate" -Ereignis ausgelöst, das ich durch Aufruf Form.Close() behandeln, um das Verhalten zu haben, das Form zu schließen, immer wenn der Benutzer außerhalb von es klickt.
Textbox Autocomplete in WebBrowser ausgelöst Ereignis des Formulars deaktivieren?

Dies funktioniert gut für einige Web-Seiten, aber leider andere Webseiten enthalten manchmal eine HTML-TextBox, die die Eigenschaft „autocomplete“ auf true gesetzt hat. Wann immer der Benutzer anfängt, die Webseite einzugeben (in der WebBrowser-Komponente), beginnt die TextBox Vorschläge für Texte für den Benutzer.

Das Hauptproblem ist, dass, wenn der Benutzer einen beliebigen Text aus den Vorschlägen klickt, das Ereignis "Deactivate" des Formulars ausgelöst wird !!! So ist die Form leider geschlossen, was ein Verhalten ist, dass ich nicht will, dass es passiert.

Wie löst man dieses Problem? Ich möchte, dass die Form schließt nur, wenn Klicks außerhalb verwendet wird, und nicht zu schließen, wenn der Benutzer auf einen Vorschlag zur automatischen Vervollständigung im WebBrowser klickt?

Wie könnte ich zum Beispiel feststellen, dass das Ereignis durch Klicken auf einen Vorschlag verursacht wird, sodass ich den Handler des Ereignisses abbrechen kann? Oder gibt es eine andere Lösung, um den Aufruf "Deactivate" beim Klicken auf Vorschlag zu verhindern? Oder existiert eine andere Lösung?

Übrigens verwende ich Form.Show(), nicht Form.ShowDialog().

Vielen Dank im Voraus

Antwort

0

Es etwas anderes aus der Textbox los sein kann, außer nur die Auswahl - wie ein Modal Dialog

mit versuchte ich folgenden Code und Deaktivieren wurde nicht ausgelöst, wenn ich einen der Vorschläge ausgewählt.

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

Wie ich sehe, haben Sie ein Textfeld im Formular selbst erstellt. Aber das ist nicht der Fall. Ich habe ein Formular, das eine Webbrowser-Komponente enthält, und die URL des Webbrowsers ist so eingestellt, dass eine Seite angezeigt wird (eine normale HTML-Seite einer beliebigen Website) und das HTML-Textfeld die Autocomplete-Eigenschaft auf true festgelegt hat. Wenn Sie dann mit dem Mausklick aus dieser HTML-Textfeldkomponente in der Webbrowserkomponente auswählen, wird der Formulardeaktivierungstrigger ausgelöst. –

+0

Ok. Haben Sie versucht, die Lösung in Verbindung in der [Antwort] (http://stackoverflow.com/questions/1747562/application-deactivate-event) –

+0

Ich werde es versuchen und Sie zurück mit den Ergebnissen, danke für Ihre spülen Hilfe. –

Verwandte Themen