2011-07-25 61 views
0

我想在C#中做一些if else条件。如果其他条件在Windows Phone 7

我下面的代码是检查文本块中的所有文本是否正确并显示一条显示消息。

if ((correctAns.Contains(textBlock1.Text)) && 
    (correctAns.Contains(textBlock2.Text)) && 
    (correctAns.Contains(textBlock3.Text)) && 
    (correctAns.Contains(textBlock4.Text)) && 
    (correctAns.Contains(textBlock5.Text))) 
    { 
     //If it contains the correct answer 
     MessageBox.Show("All correct"); 
    } 

我想现在是检查是否在文本块中的任意3是正确会显示一个消息框。

我该如何去做呢?

回答

3

数它们。

如果你的代码整个问题相匹配,这可能是最直接的 - 但是,如果文本块的数量的增长,你可能要重新思考的解决方案:

int count = 0; 

if (correctAns.Contains(textBlock1.Text)) count++; 
if (correctAns.Contains(textBlock2.Text)) count++; 
if (correctAns.Contains(textBlock3.Text)) count++; 
if (correctAns.Contains(textBlock4.Text)) count++; 
if (correctAns.Contains(textBlock5.Text)) count++; 

if (count >= 3) 
{ 
    MessageBox.Show("At least 3 correct"); 
} 
+0

感谢您的帮助 –

3

如果你想要任意组合三个,写出一个单一的条件块来覆盖一切将是非常僵硬和非灵活的。计算它们会更好,然后检查计数。

int count = 0; 
if (correctAns.Contains(textBlock1.Text)) 
    ++count; 
if (correctAns.Contains(textBlock2.Text)) 
    ++count; 
if (correctAns.Contains(textBlock3.Text)) 
    ++count; 
if (correctAns.Contains(textBlock4.Text)) 
    ++count; 
if (correctAns.Contains(textBlock5.Text)) 
    ++count; 

if (count >= 3) { 
    // Show message. 
} 
+0

感谢您的帮助 –

4

这可能是更容易把所有的文本框在一个数组,并使用LINQ数:

if (textboxes.Where(tb => correctAns.Contains(tb.Text)).Count() >= 3) 
{ 
    // show message 
} 

这样,它是非常容易的添加或删除文本框来此检查。

+0

这个答案使得在相同的类和名称空间中多次处理数据变得容易很多,但是,@Erno可能会很好地添加演示以向他展示如何添加他们到一个数组,以防万一:) – JakeJ

+0

如何将文本框添加到数组取决于当前的程序结构。 @ben tan:随时提问。 –

+0

好点,只是认为一个简短的演示可能会有所帮助,无论哪种方式,如果他需要它,他会问。 – JakeJ