是否有一种简单的方法可以解析组合框中的数值而无需创建ComboBox类?我目前的组合框有两个选项:“0(否)”和“1(是)”
我以前用过
double comboValue = double.Parse(cmbValue.Text);
但是我现在收到错误,因为我在每个选项中添加了“是”和“否”。
答案 0 :(得分:1)
您需要使用SelectedValue
属性而不是.Text
double comboValue = double.Parse(cmbValue.SelectedValue.ToString());
如果您不想创建类,并且组合框只有两个值,那么您只需编写一个if条件。
double comboValue;
if(cmbValue.Text == "0 (No)")
comboValue = 0;
else
comboValue = 1;
答案 1 :(得分:1)
我通常以这样的方式做到:
List<KeyValuePair<int, string>> items = new List<KeyValuePair<int,string>>();
items.Add(new KeyValuePair<int, string>(0, "NO"));
items.Add(new KeyValuePair<int, string>(1, "YES"));
comboBox1.DataSource = items;
comboBox1.DisplayMember = "value";
comboBox1.ValueMember = "key";
然后,当您需要获取选定的值时,只需:
int selItem = (int)comboBox1.SelectedValue;
如果您选择&#34;否&#34;它将返回0,如果您选择&#34;是&#34;它将返回1;
答案 2 :(得分:1)
另一种方法是在'string'类上使用Extension方法,如下所示:
public static class ExtensionTest
{
public static int ToComboNumber(this string input)
{
if (input == "Yes")
return 1;
else
return 0;
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
int number = comboBox1.Text.ToComboNumber();
MessageBox.Show(number.ToString());
}
}
扩展方法也适用于枚举和布尔值。 请注意类和方法上的'static'关键字。
答案 3 :(得分:0)
在你的情况下你可以简单地使用组合框的SelectedIndex属性,而不是试图解析文本或转换对象(我猜是字符串或某些对象与ToString()实现)。
请注意,我假设您不希望在某个时刻有非整数值(即0.5“可能”)。