这就是我的组合框中的内容。
Runescape
Maplestory
League of Legends
以下是我尝试使用switch语句的代码。
private void button1_Click(object sender, EventArgs e)
{
switch (comboBox1.SelectedIndex)
{
case "Runescape":
MessageBox.Show("You are playing RS");
break;
case "Maplestory":
MessageBox.Show("You are playing MS");
break;
default:
MessageBox.Show("You're playing League");
break;
}
}
它给了我一个错误,它不会让我隐式地将字符串转换为int。
我想将这些案例用作字符串而不是数字。我该怎么做?
此外,只是出于好奇,如果它的作用,我们可以作为一个案例而不是一个字符串的一部分。假装组合框说“Runescape 3”而不是“Runescape”。我不确定C#是否可以识别字符串的一部分。
case "Runescape":
MessageBox.Show("You are playing RS");
break;
答案 0 :(得分:5)
您可以使用string
或int
进行比较。
1。如果您希望compare
String
使用SelectedItem
控件的ComboBox
属性。
试试这个:
switch (comboBox1.SelectedItem.ToString().Trim())
{
case "Runescape":
MessageBox.Show("You are playing RS");
break;
case "Maplestory":
MessageBox.Show("You are playing MS");
break;
default:
MessageBox.Show("You're playing League");
break;
}
2。如果您希望compare
Index
使用SelectedIndex
控件的ComboBox
属性
试试这个:
switch (comboBox1.SelectedIndex)
{
case 0:
MessageBox.Show("You are playing RS");
break;
case 1:
MessageBox.Show("You are playing MS");
break;
default:
MessageBox.Show("You're playing League");
break;
}
3。如果您只想从SelectedItem
使用ComboBox
功能获取Split()
的第一部分。
试试这个:
switch (comboBox1.SelectedItem.ToString().Split(' ')[0])
{
case "Runescape":
MessageBox.Show("You are playing RS");
break;
case "Maplestory":
MessageBox.Show("You are playing MS");
break;
default:
MessageBox.Show("You're playing League");
break;
}
答案 1 :(得分:3)
Comboboxes有三种方法可以从中获得你想要的东西:
SelectedItem
:与索引关联的实际对象。SelectedIndex
:所选内容的整数(从零开始)索引。SelectedValue
:SelectedItem
的值(使用SelectedValuePath
)。答案 2 :(得分:2)
试试这个:
switch (Convert.ToString(comboBox1.SelectedItem))
{
//...
}
使用Convert.ToString()
以更安全的方式将其转换为字符串。
答案 3 :(得分:2)
只是一个建议,但您当前的方法不是很可扩展。添加更多游戏需要您添加到此switch语句。此外,从外观上看,开始播放所选游戏所需的逻辑将与您的UI代码紧密结合。最好定义一个接口,比如'IGame',它可以定义一个Name属性和一个StartPlaying()函数。然后可以将这三个游戏定义为实现此接口的三个单独的类。然后ComboBox可以绑定到IGame对象的集合。单击按钮时,无论用户选择哪个游戏,我们都必须调用combobox1.SelectedItem.StartPlaying()。
我已经离开WinForms世界一段时间了,所以如果没有首先进行类型检查并将combobox1.SelectedItem转换为IGame,我不能100%确定是否可行。但无论如何,我认为你会发现这种方法在未来会减少挫败感。
我知道这不是你问题的直接答案,但对于像这样的东西,多态性很棒。