C#只解析组合框中的数字
有没有一种简单的方法可以只解析combobox中的数值,而不必创建combobox类?我当前的组合框有两个选项:“0(否)”和“1(是)” 我以前使用过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
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说出于某种原因他不愿意这样做。