2011-06-10 61 views
2

我面臨一個問題,我必須以編程方式填充TextArea。我使用了下面的代碼。如何在textarea中使用mshtml輸入文本

System.Windows.Forms.HtmlElement reviewText = myDoc.GetElementById("review-text"); 
reviewText.InnerText = Program.mainForm.richTextBox1.Text.Trim(); 

這工作正常,它設置TextArea控件中的文本。我面臨的問題是,這個文本顯得很輕微。當用戶點擊這個文本時,它會消失。它只發生在第一次點擊。

所以我試了下面的代碼,先點擊這個框然後設置文本。

reviewText.InvokeMember("click"); 

然後嘗試設置TextArea中的文本但得到相同的行爲。

我挖掘到頁面的來源,並發現一些腳本與此TextArea相關聯。文本區域的

來源

<textarea onkeyup="javascript:yelp.ui.widget.countChars(this.form.comment,5000);" onkeydown="javascript:yelp.ui.widget.countChars(this.form.comment,5000);" name="comment" id="review-text" class="form400" rows="8" cols="40" style="height: 86px;"></textarea> 

腳本文本區域

<script type="text/javascript"> 
    var bizName = "Geary Club"; 
    if ($('review-text')) 
    { 
    new yelp.ui.widget.DefaultValueTextField($('review-text'), 'Please write here'); 
    } 

會有人建議我如何將文本插入到這個TextArea控件相關的?

回答

0

這是一個ASP.NET Web應用程序嗎?如果是這樣,System.Windows.Forms.HtmlElement是一個問題。我想的是,當你預先填充TextArea時,你需要以某種方式禁用新的yelp.ui.widget.DefaultValueTextField JavaScript代碼。你能夠使用多行屬性集的ASP.NET TextBox控件嗎?如果是這樣,我會使用它,並更改您的頂級代碼,以設置Textbox控件的.Text屬性。

無論哪種方式,在使用Javascript(如果這是jQuery的),我應該這樣做:

if ($('review-text') && $('review-text').val() != "") 
{ 
    new yelp.ui.widget.DefaultValueTextField($('review-text'), 'Please write here'); 
} 

這樣,如果沒有文字的默認值時,才設置。

+0

不,這是一個C#application.I正在創建一個BOT的內部文本。 – 2011-06-10 05:11:45

+0

所以這是一個帶有Webbrowser控件的Winforms應用程序?沒有更多信息,我認爲我們不能回答這個問題。 – Rob 2011-06-12 16:19:13

0

我改變了文本區域的HTML,並從其html中刪除class="form400 default_valued_text_field"屬性。

myDoc = this.webBrowser1.Document; 

myDoc.GetElementById("review-text").OuterHtml = "<textarea id=\"review-text\" onkeyup=\"javascript:ui.widget.countChars(this.form.comment,5000);\" onkeydown=\"javascript:ui.widget.countChars(this.form.comment,5000);\" name=\"comment\" rows=\"8\" cols=\"40\" style=\"height: 86px;\"></textarea>"; 

後,我設置這個元素

myDoc.GetElementById("review-text").InnerText = "Testing";