如何从List <string>获取下一个值

时间:2016-01-17 00:29:04

标签: c# list for-loop

我有List字符串的问题。我将3个值放入myCollection

List<string> myCollection = new List<string>();

myCollection.Add(Encoding.Default.GetString(data));
myCollection.Add(Encoding.Default.GetString(data2));
myCollection.Add(Encoding.Default.GetString(data3));

现在我有3个值:A,B,C

但现在我想阻止包含此值的按钮:

for (var i = 0; i < myCollection.Count; i++)

{

    if (myCollection.Contains(A))
    {

        this.A.Enabled = false;

    }

    else if (myCollection.Contains(B))
    {

        this.B.Enabled = false;
    }

    else if (myCollection.Contains(C))
    {

        this.C.Enabled = false;
    }
}

此循环后只有第一个按钮= false。现在循环完成3次同样的尝试块按钮A,我的问题是: 如何阻止其他按钮?

现在我进入第一次循环运行:

  this.A.Enabled = false;

2nd this.A.Enabled = false;


3rd this.A.Enabled = false;

但我想:

1st :   this.A.Enabled = false;

2nd :   this.B.Enabled = false;

3rd :   this.C.Enabled = false;

2 个答案:

答案 0 :(得分:3)

你不需要循环。只需使用不含if的简单else语句。

if (myCollection.Contains("A"))
    this.A.Enabled = false;

if (myCollection.Contains("B"))
    this.B.Enabled = false;

if (myCollection.Contains("C"))
    this.C.Enabled = false;

主要是else给您造成了问题。如果A的条件为真,则B和C的代码不运行。这就是else的工作原理。

答案 1 :(得分:0)

不确定你到底想要实现什么,但你的问题是你使用if..else。如果任何条件成立,则其余条件无法解决。

要解决您的问题,只需从您的条件中删除else关键字。

此外,使用Contains时,循环是不必要的。

如果您坚持循环,则必须稍微更改条件,然后才能正确使用else:

      for (int i = 0; i < myCollection.Count; i++)            
      {
        if (myCollection[i] == A)
        {
            this.A.Enabled = false;                   
        }

        else if (myCollection[i] == B)
        {
            this.B.Enabled = false;
        }

        else if (myCollection[i] == C)
        {
            this.C.Enabled = false;
        }
      }