我在輔助表單中使用WebBrowser對象來打開url,並且在加載web時,獲取並關閉該表單,但是我遇到了一些麻煩。檢測是否有任何打開的確認消息框
我有一個8秒的Timer(),並且如果表單在8秒後仍然存在,表單將被強制關閉。
WebBrowser是一個糟糕的導航器,所以我在某些網站上看到一個「alert()」,告訴我需要升級我的導航器。當WebBrowser對象加載「alert()」時,它會像我的應用程序一樣顯示在MessageBox中,所以我需要先關閉該消息,然後關閉導航器窗體。
對於這一點,我這樣做:
在主要形式有:
int cont = 0;
void t_Tick(object sender, EventArgs e)
{
cont += 1;
if (cont == 8)
{
var formularios = Application.OpenForms;
for (int i = formularios.Count - 1; i >= 0; i--)
{
if (formularios[i] != this)
{
formularios[i].Dispose();
}
}
t.Enabled = false;
}
}
private void button1_Click(object sender, EventArgs e)
{
t.Enabled = true;
p = new FormNavigator();
p.Navigate("URL HERE");
p.ShowDialog();
}
它爲我用「警報()」功能,但某些站點使用「確認()」函數,並用OK/Cancel按鈕打開表單,並且Application.OpenForms不檢測它。
你知道任何方式來檢測從.NET的那些「確認」對話框嗎?
問候。
更新
我有我的web瀏覽器對象這個屬性:
navigator.ScriptErrorsSuppressed = true;
navigator.AllowWebBrowserDrop = true;
navigator.IsWebBrowserContextMenu = false;
navigator.WebBrowserShortcutsEnabled = false;
而且我已經處理了NewWindow事件是這樣的:
private void navivator_NewWindow(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
朱莉您好,感謝您的回答來完成。我將該屬性設置爲true,但不適用於此目的。 – dank0ne