如何使用mshtml在textarea中输入文本

时间:2011-06-10 00:58:34

标签: c# javascript html mshtml

我遇到了一个问题,我必须以编程方式填充TextArea。我使用了以下代码。

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

这很好用,它在TextArea控件中设置文本。我面临的问题是这个文字看起来很轻松。当用户点击此文本时,它会消失。它只在第一次点击时发生。

所以我尝试了以下代码,首先单击此框,然后设置文本。

 reviewText.InvokeMember("click");

然后尝试在TextArea中设置文本,但行为相同。

我挖掘了页面的源代码,发现了一些与此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>

与TextArea关联的脚本

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

有人会建议我如何将文本插入此TextArea控件吗?

2 个答案:

答案 0 :(得分:0)

这是一个ASP.NET Web应用程序吗?如果是,则System.Windows.Forms.HtmlElement是一个问题。我的想法是,当你预填充TextArea时,你需要以某种方式禁用 new 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');
}

这样,只有在没有文本的情况下才会设置默认值。

答案 1 :(得分: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";