Автозаполнение текстового поля в WebBrowser запускает Деактивировать событие формы? - PullRequest
0 голосов
/ 23 марта 2012

У меня Windows Form, которая содержит WebBrowser для отображения веб-страниц. Всякий раз, когда пользователь нажимает вне Form, запускается событие Form "Deactivate", которое я обрабатываю, вызывая Form.Close(), чтобы иметь поведение закрытия Form всякий раз, когда пользователь щелкает снаружи.

Это прекрасно работает для некоторых веб-страниц, но, к сожалению, другие веб-страницы иногда содержат HTML TextBox, который имеет свойство "autocomplete", установленное на true. Всякий раз, когда пользователь начинает вводить текст на веб-странице (в компоненте WebBrowser), TextBox начинает предлагать тексты для пользователя.

Основная проблема заключается в том, что когда пользователь щелкает любой текст из предложений, запускается событие «Deactivate» формы !!! Таким образом, Form, к сожалению, закрывается, что является поведение я не хочу, чтобы это произошло.

Как решить эту проблему? Я хочу, чтобы Form закрывался только при использовании щелчков вне его, а не закрывался, когда пользователь нажимал предложение автозаполнения внутри WebBrowser?

Как я могу, например, обнаружить, что событие вызвано щелчком по предложению, чтобы я мог отменить обработчик события? Или есть другое решение для предотвращения вызова "Deactivate" при нажатии на предложение? Или существует другое решение?

Кстати, я использую Form.Show(), а не Form.ShowDialog().

Заранее спасибо

1 Ответ

0 голосов
/ 24 марта 2012

Это может быть что-то еще, кроме простого выбора из текстового поля - например, использование Модальное диалоговое окно

Я попробовал следующий код, и Деактивировать не сработало, когда я выбрал одно из предложений.

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;

 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...