MSDN WebBrowser控件的一段示例代码, 有个疑问请大家帮忙

yfwill 2009-02-02 08:46:30
原文
http://msdn.microsoft.com/zh-cn/library/system.windows.forms.webbrowser.document(VS.80).aspx

private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentText =
"<html><body>Please enter your name:<br/>" +
"<input type='text' name='userName'/><br/>" +
"<a href='http://www.microsoft.com'>continue</a>" +
"</body></html>";
webBrowser1.Navigating +=
new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
//如果把上面这句赋值注释掉的话, webBrowser1控件就不会显示DocumentText被赋值的内容,而是一片空白,
//我很疑惑, 为什么不处理Navigating事件, webBrowser1控件就不显示内容,而且必须在Navigating中将事件取消,
//如下面代码中的e.Cancel = true;

}

private void webBrowser1_Navigating(object sender,
WebBrowserNavigatingEventArgs e)
{
System.Windows.Forms.HtmlDocument document =
this.webBrowser1.Document;

if (document != null && document.All["userName"] != null &&
String.IsNullOrEmpty(
document.All["userName"].GetAttribute("value")))
{
e.Cancel = true;
System.Windows.Forms.MessageBox.Show(
"You must enter your name before you can navigate to " +
e.Url.ToString());
}
}

...全文
202 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
害怕飞的鸟 2009-02-04
  • 打赏
  • 举报
回复
这里的问题其实我碰到过,是这样的,因为WebBrowser控件总是要去访问URL属性所指向的页面的(如果不设置这个属性那么就是 about:blank)。而这个访问的过程是在Form_Load之后才做的。因此如果在Form_load中就想在webbrowser 控件里显示内容的话,必须将这个过程取消,也就是在Navigating 事件中添加 e.cancel=true
sxmonsy 2009-02-04
  • 打赏
  • 举报
回复
友情UP
yfwill 2009-02-04
  • 打赏
  • 举报
回复
Form执行load事件了,要不webBrowser1_Navigating怎么会已经被注册到webBrowser1.Navigating
niitnanfeng 2009-02-02
  • 打赏
  • 举报
回复
特别 2009-02-02
  • 打赏
  • 举报
回复
其实你的FORM并没有绑定LOAD事件,
所以Form1_Load这个方法根本没有得到执行

你这样,打开FORM,然后在属性框中,切换到事件,
找到Load事件,点击右边的下拉框,选择Form1_Load,保存,运行
yfwill 2009-02-02
  • 打赏
  • 举报
回复
邪门了,我把
webBrowser1.DocumentText =
" <html> <body>Please enter your name: <br/>" +
" <input type='text' name='userName'/> <br/>" +
" <a href='http://www.microsoft.com'>continue </a>" +
" </body> </html>";
webBrowser1.Navigating +=
new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
放到一个按钮click事件里执行,也能显示,唯独在Form1_Load里不行.
特别 2009-02-02
  • 打赏
  • 举报
回复

webBrowser1.Navigating +=
new WebBrowserNavigatingEventHandler(webBrowser1_Navigating);
注释掉,未出现楼主所说的情况
仍然显示页面,而且点击continue也会跳转到微软网站

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧