我正在使用Visual C#Winforms來控制WebBrowser對象。WebBrowser控件和GetElement編號
具體而言,我想使用WebBrowser.Document.GetObjectByID(「myid」).Style設置加載到WebBrowser對象中的文檔的一部分對象的樣式。
我想用WinForm上的按鈕將標題的樣式從「display:none」切換到「display:block; text-align:middle」。 這是我在做什麼:
private void frmView_Load(object sender, EventArgs e)
{
string question = "How many cows?";
string answer = "5 cows";
webBrowser1.Navigate("about:blank");
webBrowser1.Document.OpenNew(false);
webBrowser1.Document.Write("<html><body><div id='question'><h1>");
webBrowser1.Document.Write(question);
webBrowser1.Document.Write("</h1></div><div id='answer'><h2>");
webBrowser1.Document.Write(answer);
webBrowser1.Document.Write("</h2></div></body></html>");
webBrowser1.Refresh();
webBrowser1.Document.GetElementById("answer").Style = "display:none;";
//if I do a breakpoint here, I get the Style = "DISPLAY:NONE"
btnAnswer.Visible = true;
btnNext.Visible = true;
}
private void btnAnswer_Click(object sender, EventArgs e)
{
//if this is the first time ran, doing a breakpoint here will
//show Style to be NULL
webBrowser1.Document.GetElementById("answer").Style = "display:block;text-align:center";
//now the Style is properly set, and will remain that way, even after this function returns}
注意,我能夠控制與btnAnswer_Click方法Style屬性,但不能與frmView_Load方法。我知道我可以在創建時將樣式信息放入div標籤(這確實有效),但爲什麼上面的代碼不工作?
更新:
我發現了一些可能朝着正確方向前進的東西。如果我在webBrowser1.Navigate("about:blank")
之後的任何時刻撥打webBrowser1.Update()
,那麼frmView_Load中的所有內容都可以正常工作。不幸的是,任何嘗試在frmView_Load退出後更改文檔都將失敗。它們不僅會失敗,而且在frmView_Load返回webBrowser1.Document之後,它將以某種方式設置爲NULL。 任何人都可以闡明這種控制應該如何工作?
您正在使用哪個'WebBrowser'控件? Windows窗體? WPF? – 2012-03-02 04:43:26
System.Windows.Forms.WebBrowser – 2012-03-02 05:15:56
你的問題有點複雜,我嘗試了代碼並單擊表單上的一個按鈕(它不是一個<輸入按鈕>?)將答案更改爲白色或黑色。另一件事情對我來說是不同的,「在我退出該函數後.Style屬性爲null」後,風格就爲我設定了。你可以編輯你的問題,讓FormLoad事件設置初始HTML,並且有一個button_click事件來改變顏色,這樣每個人都可以很容易地重新渲染。 – 2012-03-02 05:37:18