2011-07-25 56 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