2015-09-15 117 views
0

我正在開發windows窗體聊天應用程序,並且我正在richtextbox中撰寫消息,但是當我點擊發送按鈕並且每個消息都顯示在webbrowser控件中時。 。我要動態地添加WebBrowser控件個別消息send.i正在使用下面的代碼:在windows聊天應用程序中動態添加webbrowser控件:

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")); 
     } 

    } 
} 

回答

0

這裏是你問的情況:

  • 添加Panel形成放瀏覽器並將其autoscroll屬性設置爲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; 
}