Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#只解析组合框中的数字_C#_Winforms_Visual Studio_Combobox - Fatal编程技术网

C#只解析组合框中的数字

C#只解析组合框中的数字,c#,winforms,visual-studio,combobox,C#,Winforms,Visual Studio,Combobox,有没有一种简单的方法可以只解析combobox中的数值,而不必创建combobox类?我当前的组合框有两个选项:“0(否)”和“1(是)” 我以前使用过 double comboValue = double.Parse(cmbValue.Text); 但是我现在遇到了错误,因为我在每个选项中添加了“是”和“否”。您需要使用SelectedValue属性,而不是。Text double comboValue = double.Parse(cmbValue.SelectedValue.ToStri

有没有一种简单的方法可以只解析combobox中的数值,而不必创建combobox类?我当前的组合框有两个选项:“0(否)”和“1(是)”

我以前使用过

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

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

您需要使用
SelectedValue
属性,而不是
。Text

double comboValue = double.Parse(cmbValue.SelectedValue.ToString());
如果您不想创建类,并且组合框只有两个值,那么您可以简单地编写一个If条件

double comboValue;
if(cmbValue.Text ==  "0 (No)") 
    comboValue = 0;
else
    comboValue = 1;

您需要使用
SelectedValue
属性而不是
。Text

double comboValue = double.Parse(cmbValue.SelectedValue.ToString());
如果您不想创建类,并且组合框只有两个值,那么您可以简单地编写一个If条件

double comboValue;
if(cmbValue.Text ==  "0 (No)") 
    comboValue = 0;
else
    comboValue = 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";

如果您选择“否”,它将返回0;如果您选择“是”,它将返回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";

如果您选择了“否”,它将返回0;如果您选择了“是”,它将返回1。在您的情况下,您可以简单地使用combobox的SelectedIndex属性,而不是尝试解析文本或转换对象(我猜是字符串或带有ToString()实现的某个对象)


请注意,我假设您不希望在某一点上有非整数值(即0.5“可能)。

在您的情况下,您可以简单地使用combobox的SelectedIndex属性,而不是尝试解析文本或转换对象(我猜是字符串或带有ToString()实现的某个对象)


请注意,我假设您不希望在某个点上有非整数值(即0.5“Maybe”)。

另一种方法是对“string”类使用扩展方法,如下所示:

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”关键字。

另一种方法是在“string”类上使用扩展方法,如下所示:

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”关键字。

它取决于值是什么。如果组合框是由字符串填充的,那么它不会有什么区别。这是一个真正应该有一个具有值的对象和
ToString
实现的对象,尽管OP说出于某种原因他不愿意这样做。这取决于值是什么。如果组合框是由字符串填充的,那么它不会有什么区别。这是一个真正应该有一个具有值的对象和
ToString
实现的对象,尽管OP说出于某种原因他不愿意这样做。