如何使用.net webBrowser对象

本文关键字:对象 webBrowser net 何使用 | 更新日期: 2023-09-27 17:50:28

有人知道使用System.Windows.Forms.WebBrowser对象的教程吗?我四处找了一下,但没有找到。到目前为止,我的代码是(非常复杂的):

System.Windows.Forms.WebBrowser b = new System.Windows.Forms.WebBrowser();
b.Navigate("http://www.google.co.uk");

但它实际上没有导航到任何地方(即b.l l为空,b.p document为空等)

谢谢

如何使用.net webBrowser对象

浏览器导航到页面需要时间。在导航完成之前,Navigate()方法不会阻塞,否则会冻结用户界面。完成后将触发DocumentCompleted事件。您必须将代码移动到该事件的事件处理程序中。

一个额外的要求是,您创建WB的线程是单线程COM组件的幸福家园。它必须是STA和泵消息循环。控制台模式的应用程序不满足这个要求,只有Winforms或WPF项目有这样的线程。检查这个答案是否有与控制台模式程序兼容的解决方案。

这是一个非常简单的控件。使用以下代码

    // Navigates to the URL in the address box when 
// the ENTER key is pressed while the ToolStripTextBox has focus.
private void toolStripTextBox1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
    {
        Navigate(toolStripTextBox1.Text);
    }
}
// Navigates to the URL in the address box when 
// the Go button is clicked.
private void goButton_Click(object sender, EventArgs e)
{
    Navigate(toolStripTextBox1.Text);
}
// Navigates to the given URL if it is valid.
private void Navigate(String address)
{
    if (String.IsNullOrEmpty(address)) return;
    if (address.Equals("about:blank")) return;
    if (!address.StartsWith("http://") &&
        !address.StartsWith("https://"))
    {
        address = "http://" + address;
    }
    try
    {
        webBrowser1.Navigate(new Uri(address));
    }
    catch (System.UriFormatException)
    {
        return;
    }
}
// Updates the URL in TextBoxAddress upon navigation.
private void webBrowser1_Navigated(object sender,
    WebBrowserNavigatedEventArgs e)
{
    toolStripTextBox1.Text = webBrowser1.Url.ToString();
}

你也可以使用这个例子

扩展Web浏览器

将一个浏览器控件放到一个表单中,并将其AllowNavigation设置为true。然后添加一个按钮控件,并在其click事件中写入webBrowser.Navigate("http://www.google.co.uk"),并等待页面加载。

对于一个快速示例,您也可以使用webBrowser.DocumentText = "<html><title>Test Page</title><body><h1> Test Page </h1></body></html>"。这将显示示例页面。

试试这个简单的例子
声明:

using System.Windows.Forms;

用法:

WebBrowser b = new WebBrowser();
b.DocumentCompleted += ( sender, e ) => {
    WebBrowser brw = ( WebBrowser )sender;
    // brw.Document should not null here
    // Do anythings with your Document
    HtmlElement div = brw.Document.GetElementById( "my_div" );
    head.InnerHtml = "Hello World";
    //brw.Url should not null here
    Console.WriteLine( brw.Url.AbsoluteUri );
    // Invoke JS function
    brw.Document.InvokeScript( "any_global_function", new object[] { "From C#" } );
};
b.Navigate("http://www.google.co.uk");

如果你只是试图打开浏览器和导航我做的很基本,每个人的答案都很复杂。我对c#非常陌生(1周),我刚刚写了这段代码:

string URL = "http://google.com";
object browser; 
browser = System.Diagnostics.Process.Start("iexplore.exe", URL)
//This opens a new browser and navigates to the site of your URL variable