如何在for循环中添加更多迭代C#让我的循环拾取更多

时间:2016-04-16 13:45:24

标签: c# .net visual-studio

我试图在我的软件的文本框中显示多个内容,并且只打印出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;
}

3 个答案:

答案 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。