【问题标题】:C# Parsing only Numbers from ComboboxC# 仅从组合框中解析数字
【发布时间】:2017-12-15 13:46:51
【问题描述】:

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

我以前用过

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

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

【问题讨论】:

    标签: c# winforms visual-studio combobox


    【解决方案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;
    

    如果你选择“NO”返回0,如果你选择“YES”返回1

    【讨论】:

      【解决方案2】:

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

      double comboValue = double.Parse(cmbValue.SelectedValue.ToString());
      

      如果您不想创建类并且组合框只有两个值,那么您可以简单地编写一个 if 条件。

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

      【讨论】:

      • 这取决于值是什么。如果组合框由字符串填充,那么它不会有所作为。这是一个真正应该有一个具有值的对象和ToString 实现的对象——尽管 OP 说出于某种原因他宁愿不这样做。
      【解决方案3】:

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

      请注意,我假设您不希望在某些时候出现非整数值(即 0.5“也许”)。

      【讨论】:

        【解决方案4】:

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

        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());
            }        
        }
        

        扩展方法也适用于枚举和布尔值。 请注意类和方法上的“静态”关键字。

        【讨论】:

          猜你喜欢
          • 2011-04-28
          • 1970-01-01
          • 1970-01-01
          • 2011-10-30
          • 2013-01-28
          • 2019-12-09
          • 2018-01-11
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多