我在c#中编写简单的Web浏览器。对于多标签功能,我添加了tabcontrol并将webbrowser1放入其中。我使用toolstripbutton动态添加tabpages,webbrowsers(并使用webbrowser1事件处理其事件):
TabPage tabpage = new TabPage();
tabControl1.Controls.Add(tabpage);
WebBrowser webbrowser = new WebBrowser();
webbrowser.Parent = tabpage;
webbrowser.Dock = DockStyle.Fill;
webbrowser.Navigate("www.google.com");
webbrowser.DocumentTitleChanged += new EventHandler(webBrowser1_DocumentTitleChanged);
webbrowser.StatusTextChanged += new EventHandler(webBrowser1_StatusTextChanged);
webbrowser.ScriptErrorsSuppressed = true;
webbrowser.DocumentCompleted += new System.Windows.Forms.WebBrowserDocumentCompletedEventHandler(this.webBrowser1_DocumentCompleted);
webbrowser.Navigated += new System.Windows.Forms.WebBrowserNavigatedEventHandler(this.webBrowser1_Navigated);
webbrowser.Navigating += new System.Windows.Forms.WebBrowserNavigatingEventHandler(this.webBrowser1_Navigating);
webbrowser.ProgressChanged += new System.Windows.Forms.WebBrowserProgressChangedEventHandler(this.webBrowser1_ProgressChanged);
我的问题是我无法正确处理它们,因为我为webbrowser1编写了代码,并且不知道如何调用动态创建的对象。我写了这个:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
{
foreach (Control c in tabControl1.SelectedTab.Controls)
{
if (e.GetType() == typeof(WebBrowser))
{
WebBrowser web = new WebBrowser();
if (e.KeyCode == Keys.Enter)
web.Navigate(toolStripTextBox1.Text);
}
}
}
但它根本不起作用(即使对于webbrowser1)。我该如何解决这个问题?
提前致谢
答案 0 :(得分:0)
我认为你打算做这样的事情:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
{
foreach (Control c in tabControl1.SelectedTab.Controls)
{
var web = c as WebBrowser;
if (c != null && e.KeyCode == Keys.Enter)
{
web.Navigate(toolStripTextBox1.Text);
}
}
}
您正在循环浏览TabControl
中的控件,您需要找到WebBrowser
的控件。获得该控件后,您希望使用WebBrowser
的特定实例执行导航,而不是创建新的浏览器。我不知道你对密钥处理程序有什么其他代码,但是如果你只对enter执行一个动作,我会修改这个代码来检查它,并且只在我真正需要时才进行集合。像这样:
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Enter) return;
foreach (Control c in tabControl1.SelectedTab.Controls)
{
var web = c as WebBrowser;
if (c != null)
{
web.Navigate(toolStripTextBox1.Text);
}
}
}