在 windows 聊天应用程序中动态添加网络浏览器控件:

dynamically add webbrowser control in windows chat application:

我正在开发 windows 表单聊天应用程序,我正在 richtextbox 中编写消息,但是当我单击发送按钮时,每条消息都显示在网络浏览器控件中。 .我想为单个消息动态添加网络浏览器控件是 send.i 我正在使用以下代码:

namespace WindowsFormsApplication1
{ 
    [ComVisible(true)]
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();

          //  this.w1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(w1_DocumentCompleted);
        }
        WebBrowser w1 = new WebBrowser();
        private void button1_Click(object sender, EventArgs e)
        {

            this.Controls.Add(w1);

            HtmlElement div = w1.Document.GetElementById("abc");
            div.InnerHtml = richTextBox1.Text;
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            w1.Navigate(Path.Combine(Environment.CurrentDirectory, "HTMLPageForScripting.htm"));
        }

    }
}

这是您要的案例:

  • 在表单中添加一个 Panel 以放入浏览器并将其自动滚动 属性 设置为 true;
  • 在 button1 Click 事件中,创建浏览器,设置其宽度和高度,并导航到您想要的文档。
  • 在 button1 中单击事件订阅 DocumentCompleted 事件并在那里添加内容。我们确实在此处添加,因为我们应该确保包含 <div id="abc"></div> 的所有内容都已加载。

代码如下:

private void button1_Click(object sender, EventArgs e)
{
    var browser = new WebBrowser();
    browser.Height = 100;
    browser.Dock = DockStyle.Top;
    browser.Navigate(@"D:\test.html");
    browser.DocumentCompleted += browser_DocumentCompleted;

    this.panel1.Controls.Add(browser);
    //Just do it to put it at the end of list and scroll to it
    browser.BringToFront();
    this.panel1.ScrollControlIntoView(browser);
}

void browser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
    var browser = (WebBrowser)sender;
    HtmlElement div = browser.Document.GetElementById("abc");
    div.InnerHtml = richTextBox1.Text;
}