如何将枚举类型的值传递给另一个枚举变量?

时间:2011-03-11 04:55:01

标签: c#

我在enum变量中得到了值,但在将它分配给另一个enum类型的变量时,它总是得到0 ...这是我正在使用的代码,dbProperties是类DBProperties的对象,它具有DBType类型的成员。 dbProperties.DBType总是在为其赋值后返回0 ...请帮助......!

DBType val = (DBType)cbDataType.SelectedIndex;
cbDataType.SelectedIndex = (int)val;
dbProperties.DBType = val;

3 个答案:

答案 0 :(得分:0)

所以dbProperties.DBType是DBType类型的变量的名称?

不确定为什么总会返回0,但我认为这与将值分配给枚举无关。

运行此代码,例如:

enum DBType
{
    Int,
    Bool,
    String
}

class DBProperties
{
    public DBType DBType;
}

class Program
{
    static void Main(string[] args)
    {
        DBType d = (DBType)2;
        DBProperties p = new DBProperties();
        p.DBType = d;
        Console.WriteLine((int)p.DBType); //outputs 2
        Console.ReadLine();
    }
}

答案 1 :(得分:0)

为了让人们帮助你,你需要对问题更加明确和具体。

你确定val并不总是零吗?如果您始终在下拉框中选择第一个选项,则selectedIndex将始终为零。

答案 2 :(得分:0)

这对我来说很好。我想你有一个表格,你有一个下拉组合框,里面有物品。所以我复制了这个,这是代码。下拉列表中填充的项目(在序列中)与下面的代码(enum DBType)中显示的项目相匹配,并显示在附加的第一张图像中

  enum DBType { Int, Double, Float, Bool, String  }

  class DBProperties
  {
    private DBType dbType;
    public DBType DBType { get { return dbType; } set { dbType = value; } }
  }

  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    private void cbDataType_SelectedIndexChanged(object sender, EventArgs e)
    {
      DBType val = (DBType)cbDataType.SelectedIndex;
      cbDataType.SelectedIndex = (int)val;
      var dbProperties = new DBProperties();
      dbProperties.DBType = val;
    }
  }

dbProperties.DBType属性已正确设置为下拉列表中选定的项目。 enter image description here

在下拉列表中选择“bool”时,属性设置为“Bool”,如第二张图片所示。enter image description here