我有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;
答案 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;
}
}