winform里面有一个webBrowser1,我通过webBrowser1.Navigate(WebUrl.ToString())的方法打开一个网页,触发webBrowser1_DocumentCompleted事件得到webBrowser1.Document.Body.InnerText的值。代码如下(红色部分求助):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace TranslationEngine
{
public partial class Translate : Form
{
public Translate()
{
InitializeComponent();
} private void btnTranslation_Click(object sender, EventArgs e)
{
}
public string GetReuslt(string OrgString, string TranslateMode)
{
StringBuilder WebUrl = new StringBuilder(@"http://translate.google.com/translate_t#"); switch (TranslateMode)
{
case "zh-CN|en|":
WebUrl.Append("zh-CN|en|"+OrgString);
break; case "en|zh-CN|":
WebUrl.Append("en|zh-CN|" + OrgString);
break;
} webBrowser1.Navigate(WebUrl.ToString());
目的使txtResult.Text得到webBrowser1_DocumentCompleted事件完成以后webBrowser1.Document.Body.InnerText的值,代码应该怎么写? return txtResult.Text;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
txtResult.Text = webBrowser1.Document.Body.InnerText;
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace TranslationEngine
{
public partial class Translate : Form
{
public Translate()
{
InitializeComponent();
} private void btnTranslation_Click(object sender, EventArgs e)
{
}
public string GetReuslt(string OrgString, string TranslateMode)
{
StringBuilder WebUrl = new StringBuilder(@"http://translate.google.com/translate_t#"); switch (TranslateMode)
{
case "zh-CN|en|":
WebUrl.Append("zh-CN|en|"+OrgString);
break; case "en|zh-CN|":
WebUrl.Append("en|zh-CN|" + OrgString);
break;
} webBrowser1.Navigate(WebUrl.ToString());
目的使txtResult.Text得到webBrowser1_DocumentCompleted事件完成以后webBrowser1.Document.Body.InnerText的值,代码应该怎么写? return txtResult.Text;
}
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
txtResult.Text = webBrowser1.Document.Body.InnerText;
}
}
}
{
txtResult.Text = webBrowser1.Document.Body.InnerText;
} 这里不是已经都获取了值了吗
我希望通过GetReuslt函数获取返回值
public string GetReuslt(string OrgString, string TranslateMode)
你不想在这个事件里面txtResult.Text = webBrowser1.Document.Body.InnerText; 加上这句???
是读取网页完成后得到的直接放上面txtResult.Text得不到值的
txtResult.Text = webBrowser1.Document.Body.InnerText;
而你要获取的值必须是加载完成后才能获得。
所以…… 你陷入了一个误区 我换个写法你一下就能明白、
public void GetReuslt(string OrgString, string TranslateMode)
{
StringBuilder WebUrl = new StringBuilder(@"http://translate.google.com/translate_t#"); switch (TranslateMode)
{
case "zh-CN|en|":
WebUrl.Append("zh-CN|en|"+OrgString);
break; case "en|zh-CN|":
WebUrl.Append("en|zh-CN|" + OrgString);
break;
} webBrowser1.Navigate(WebUrl.ToString());
} string strRes;
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
strRes= webBrowser1.Document.Body.InnerText;
txtResult.Text=strRes;
//strRes 这个的获得必须写在这里,其以后的处理最好也写在这里,以为只有在这以后才能保证同步
}
我上面的代码我是准备封装成一个类库,别的项目可以通过实例化Translate类,从GetResult这个函数得到值。在书委托上看得不够明白,能否将我的代码改一下便于学习?