我有一个Windows Form
,其中包含WebBrowser
来显示网页。每当用户在Form
之外按下时,Form
的“Deactivate
”事件就会被触发,我通过调用Form.Close()
来处理关闭Form
的行为。每当用户点击它之外的时候。
这适用于某些网页,但遗憾的是,其他网页有时会包含HTML TextBox
,其属性“autocomplete
”设置为true
。每当用户开始在网页中键入内容时(在WebBrowser组件中),TextBox
开始为用户建议文本。
主要问题是,当用户点击建议中的任何文字时,表单的“Deactivate
”事件会被触发 !!! 所以Form
很遗憾关闭,这是一种我不希望它发生的行为。
如何解决这个问题?我希望Form
仅在使用外部点击时关闭,而不是在用户点击WebBrowser中的自动完成建议时关闭?
例如,我怎样才能检测到事件是由点击建议引起的,以便我可以取消事件的处理程序?或者是否有其他解决方案可以防止在建议点击时调用“Deactivate
”?还是存在另一种解决方案?
顺便说一句,我使用的是Form.Show()
,而不是Form.ShowDialog()
。
提前致谢
答案 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;
}