我不熟悉在Visual Studio和C#中创建表单。但我创建了一个具有一些组合框的UI,其中DropDownStyle是DropDownList。显示的项目是“是”和“否”。但我需要将此作为布尔值分配给某个对象ai上的属性,并且当前执行此操作:
if (cmbExample.Text == "Yes")
{
ai.isPacketType = true;
}
else if (cmbExample.Text == "No")
{
ai.isPacketType = false;
}
我基本上想要做这样的事情(或其他一些班轮):
ai.isPacketType = cmbExample.Text;
如何将Text Yes链接为值true,将No链接为false?
答案 0 :(得分:3)
你可以这样做:
ai.isPacketType = (cmbExample.Text == "Yes");
或isPacketType
是bool?
:
ai.isPacketType = string.IsNullOrEmpty(cmbExample.Text) ? (bool?)null : cmbExample.Text == "Yes";
答案 1 :(得分: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
并绑定到这组对。有关详细信息,请访问博客链接。
答案 2 :(得分:0)
ai.isPacketType = (cmbExample.Text == "Yes");
答案 3 :(得分:0)
你当然可以这样写
ai.isPacketType = cmbExample.Text == "Yes";
答案 4 :(得分:0)
理想情况下,您可能希望围绕Boolean创建一个小的包装类/结构。然后,您可以覆盖ToString()值以返回“是”或“否”。
底层值将保持不变,但UI将通过使用ComboBox上的ValueMember和DisplayMember属性显示不同的值。
这可能被认为是MVVM方法,通过在数据上添加ViewModel使其在UI上看起来很好,而不用任何条件代码直接驱动它。
答案 5 :(得分:0)
您可以使用ai.isPacketType = cmbExample.Text == "Yes"
(区分大小写)或ai.isPacketType = string.Compare(cmbExample.Text, "Yes", true) == 0
(不区分大小写)。
答案 6 :(得分:-1)
你不能使用'Checked'属性,如果未选中则会检查为true,如果未选中则为false:
ai.isPacketType = cmbExample.Checked;