Web浏览器中的文本框自动完成功能会触发表单的停用事件?

时间:2012-03-23 19:44:36

标签: c# winforms autocomplete textbox browser

我有一个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 :(得分: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;

 }