2010-11-25 43 views
1

我是新來創建在Visual Studio和C#的形式。但我做了一個UI,其中DropDownStyle是DropDownList的一些組合框。顯示的項目是是和否。但我需要指定這是一個布爾值一些目標AI的屬性,目前做到這一點:如何使Yes/No組合框返回true/false?

if (cmbExample.Text == "Yes") 
    { 
     ai.isPacketType = true; 
    } 
    else if (cmbExample.Text == "No") 
    { 
     ai.isPacketType = false; 
    } 

我基本上想要做這樣的事情(或者其他一個班輪):

ai.isPacketType = cmbExample.Text; 

如何將文本是鏈接到值true和否爲false?

+4

你爲什麼不使用複選框? – bAN 2010-11-25 08:48:48

+1

如果您不能使用複選框,那麼多於一行的代碼有什麼問題?至少它明確了你在做什麼。 – 2010-11-25 09:11:05

回答

3

你可以這樣說:

ai.isPacketType = (cmbExample.Text == "Yes"); 

或者,如果isPacketTypebool?

ai.isPacketType = string.IsNullOrEmpty(cmbExample.Text) ? (bool?)null : cmbExample.Text == "Yes"; 
+0

問題在於組合框默認爲空。當用戶點擊它時,只有「是」和「否」可供選擇。 ai.isPacketType是null作爲默認設置,不假,所以我基本上會做一個ai.isPacketType =(cmbExample.Text ==「否」);也。我不是嗎? – 2010-11-25 08:58:24

0
ai.isPacketType = (cmbExample.Text == "Yes"); 
0

當然,你可以把它寫這樣

ai.isPacketType = cmbExample.Text == "Yes"; 
0

理想你可能想要在布爾值周圍創建一個包裝類/結構體。然後,您可以覆蓋ToString()值以返回Yes或No.

底層值將保持不變,但UI將通過在ComboBox上使用ValueMember和DisplayMember屬性顯示不同的值。

這可能會被認爲是一個MVVM方法,在您的數據使它看起來UI上的良好添加視圖模型,而不直接與任何條件代碼中駕駛它。

0

您既可以使用ai.isPacketType = cmbExample.Text == "Yes"(區分大小寫),或ai.isPacketType = string.Compare(cmbExample.Text, "Yes", true) == 0(不區分大小寫)。

-1

廣東話您使用「選中」屬性,它會給你真正的檢查和虛假如果不加以控制:

ai.isPacketType = cmbExample.Checked;

1

如果要做到這一點,你使用數據綁定有一個整潔的小辦法做到這一點在this blog post描述。基本上你設置了一對夫婦的鍵值對:

private List<KeyValuePair<string, bool>> GenerateYesNo() 

{ 
    List<KeyValuePair<string, bool>> yesNoChoices = new List<KeyValuePair<string,bool>>(); 

    yesNoChoices.Add(new KeyValuePair<string, bool>("Yes", true)); 
    yesNoChoices.Add(new KeyValuePair<string, bool>("No", false));  
    return yesNoChoices; 
} 

或者在VB.Net:

Private Function GenerateYesNo() As List(Of KeyValuePair(Of String, Boolean)) 
    Dim yesNoChoices As New List(Of KeyValuePair(Of String, Boolean)) 

    yesNoChoices.Add(New KeyValuePair(Of String, Boolean)("Yes", True)) 
    yesNoChoices.Add(New KeyValuePair(Of String, Boolean)("No", False)) 

    Return yesNoChoices 
End Function 

並綁定到這組對。有關詳細信息,請點擊博客鏈接。