我试图在我的软件的文本框中显示多个内容,并且只打印出1/5
我认为我把for循环全部混淆了所以这里是它的外观
var getTopFive = new FirefoxDriver();
getTopFive.Navigate().GoToUrl("https://www.tradingview.com/");
IList<IWebElement> movies = getTopFive.FindElements(By.CssSelector("tbody tr"));
for (int i = 0; i < 1; ++i)
{
activeTextBox.Text = movies[i].Text;
}
这是我尝试过但失败的原因。
我尝试添加另一个
activeTextBox.Text = movies[i].Text;
哪个不起作用
我还尝试在顶部显示相同代码的第二个块,但是int等名称不同。
然后我尝试在其下面添加一个else,这给了我另一个错误。
所以我的问题是,我如何让循环遍历所有5个项目,而不是仅仅通过这行代码显示第一个项目。
for (int i = 0; i < 1; ++i)
{
activeTextBox.Text = movies[i].Text;
}
答案 0 :(得分:4)
这里有两个问题。第一个是你的for循环只会发生一次因为for(int i = 0; i < 1; i++)
。
要循环多次,您需要将1
更改为其他内容。如果您想要它是动态的,请使用for(int i = 0; i < movies.Count; i++)
。
第二个问题是activeTextBox.Text
每次写入时都会被覆盖。无论你重复循环或行多少次,文本框中唯一显示的就是循环中的最后一项。
如果您希望它显示所有项目,您需要执行以下操作:
activeTextBox.Text += movies[i].Text + "\n";
\n
会将每部电影放在一个单独的行上 - 您可以使用连字符或类似内容来分隔每个项目。
答案 1 :(得分:3)
IList 有一个名为 Count 的属性。此属性返回列表中的元素数。像这样在你的循环中使用它来显示所有电影:
#include <stdio.h>
int main(){
int largest = 0;
int no1, no2, no3;
printf("Number1: ");
scanf("%d", &no1);
printf("Number2: ");
scanf("%d", &no2);
printf("Number3: ");
scanf("%d", &no3);
if ((no1 > no2) && (no1>no3)){
largest=no1;
}
else if ((no2 > no1) && (no2>no3)) {
largest=no2;
}
else {
largest=no3;
}
printf("The largest number is:%d", largest);
return 0;
}
第二种方法是使用这样的foreach循环:
for (int i = 0; i < movies.Count; i++)
{
activeTextBox.Text = movies[i].Text;
}
请记住,每个循环都会覆盖您的文本。所以最后你的文本将是你循环的最后一项。如果你想把名字添加到彼此之后,就像这样(用减号分隔)
foreach (IWebElement WebElement in movies)
{
activeTextBox.Text = WebElement.Text;
}
或者
activeTextBox.Text += " - " + movies[i].Text;
使用
清除循环前的文本activeTextBox.Text += " - " + WebElement.Text
答案 2 :(得分:1)
尝试使用此代码(不要忘记添加using System.Linq;
):
activeTextBox.Text = string.Join("; ", movies.Select(x => x.Text));
<强>解释强>
movies.Select(x => x.Text)
获取每个IWebElement
(电影)并返回其Text
属性。因此,您最终会得到一个电影名称列表,而不是IWebElement
个对象。
接下来,您将这些电影合并为一个字符串,以分号分隔。 (string.Join("; ", ...)
)
然后将结果分配给activeTextBox。