Shi*_*eek 18 .net c# webbrowser-control winforms
我的Windows窗体应用程序中有一个textBox和一个webBrowser控件.每当用户在textBox中输入HTML代码时,webBrowser控件都会显示其编译的表单.这个代码:
private void textBox2_TextChanged(object sender, EventArgs e)
{
webBrowser1.DocumentText = textBox2.Text;
}
Run Code Online (Sandbox Code Playgroud)
但是每当我单击webBrowser控件中的链接时,它都会在同一个webBrowser控件中打开它.我想要的是它应该在系统的默认Web浏览器中打开.那么这个处理链接点击的webBrowser控件有什么事件吗?
key*_*rdP 26
最简单的方法是拦截导航事件.
public void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
//cancel the current event
e.Cancel = true;
//this opens the URL in the user's default browser
Process.Start(e.Url.ToString());
}
Run Code Online (Sandbox Code Playgroud)
我想在这个答案中添加更多内容,
每次更改webBrowser的内容时,都会执行Coz webBrowser1_Navigating方法.
在您的情况下,每当您将值设置为DocumentText时,都会调用此方法,并且当没有url且其默认值为about:blank时.所以我们也应该检查这个,否则它不会加载任何内容.
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
if (!(e.Url.ToString().Equals("about:blank", StringComparison.InvariantCultureIgnoreCase)))
{
System.Diagnostics.Process.Start(e.Url.ToString());
e.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
此代码在这里应该起作用:
private void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
{
System.Diagnostics.Process.Start(e.Url.ToString());
e.Cancel = true;
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这一点,以确保它确实有效!
希望这可以帮助!!
| 归档时间: |
|
| 查看次数: |
15994 次 |
| 最近记录: |