我尝试解析我的richTextBox并在每次在richTextBox中都有一个新行时调用我的函数。
例如,在我的richTextBox中,我将:
A
B
C
对于每个值,我想调用我的函数" removePO()"与相关的值。 但我的代码只使用最后一个元素(在我们的例子中,它只使用" C")
这是我的代码:
//Global vars
string[] lines;
function a(){
// .... some stuff
// I get the value of my rich TextBox
lines = richTextBox1.Lines;
//Foreach value, I call my remove function
foreach(String line in lines)
{
removePO();
}
}
private void removePO()
{
webBrowser1.Document.GetElementById("ctl00_cphContent_txtSAPOrderId").SetAttribute("value", "00" + line);
webBrowser1.Document.GetElementById("ctl00_cphContent_btnSearchOrder").InvokeMember("Click");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
SendKeys.Send(username);
SendKeys.Send("{TAB}");
SendKeys.Send(password);
SendKeys.Send("{ENTER}");
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted;
}
protected void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
HtmlElement el = webBrowser1.Document.GetElementById("content").GetElementsByTagName("a")[0];
String anchorText = el.InnerText; // will contain "K"
String url = el.GetAttribute("href"); // will contain "test"
el.SetAttribute("onclick", "true");
el.InvokeMember("Click");
webBrowser1.DocumentCompleted += webBrowser1_DocumentCompleted2;
}
catch(Exception ex)
{
Console.WriteLine("Ex Exception : " + ex);
}
}
protected void webBrowser1_DocumentCompleted2(object sender, WebBrowserDocumentCompletedEventArgs e)
{
try
{
HtmlElement delete = webBrowser1.Document.GetElementById("ctl00_cphContent_lnkDeleteRequest");
delete.SetAttribute("onclick", "true");
delete.InvokeMember("Click");
}
catch (Exception delete)
{
Console.WriteLine("Delete Exception : "+delete);
}
}
你知道为什么这不起作用吗? 谢谢!
答案 0 :(得分:1)
你的方法应如下所示:
private void removePO(string lineOfElement)
{
webBrowser1.Document.GetElementById("ctl00_cphContent_txtSAPOrderId").SetAttribute("value", "00" + lineOfElement);
webBrowser1.Document.GetElementById("ctl00_cphContent_btnSearchOrder").InvokeMember("Click");
while (webBrowser1.ReadyState != WebBrowserReadyState.Complete)
//...
}
并且它的召唤是这样的:
//Foreach value, I call my remove function
foreach(String line in lines)
{
removePO(line);
}
然后你总是使用来自foreach-Iteration的实际字符串行。
否则removePO
中的行必须是全局变量。但是,您并未在foreach中为line
分配removePO
。这就是为什么它不能像你编程那样工作
答案 1 :(得分:0)
将void removePO()
的签名更改为void removePO(string ine)
,并将来电removePO()
更改为removePO(line)
。