C#仅解析Combobox中的数字

时间:2017-07-11 13:08:47

标签: c# winforms visual-studio combobox

是否有一种简单的方法可以解析组合框中的数值而无需创建ComboBox类?我目前的组合框有两个选项:“0(否)”和“1(是)”

我以前用过

double comboValue = double.Parse(cmbValue.Text);

但是我现在收到错误,因为我在每个选项中添加了“是”和“否”。

4 个答案:

答案 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“可能”)。