Tag: enums

将枚举元素作为事件参数传递给C#

是否可以将Enum元素作为事件参数传递? 假设我有…… public class Letters { public delegate void StateChangedEventHandler(object sender, EventArgs e); public event StateChangedEventHandler StateChanged; public AbcState state = AbcState.Aaa; public AbcState State { get{return this.state;} set { this.state = value; this.OnStateChanged(); } } public enum AbcState { Aaa, Bbb, Ccc } protected virtual void OnStateChanged() { StateChanged?.Invoke(this, State); } 看看我如何尝试将枚举元素作为事件参数传递? 现在,我通常会创建一个类并扩展EventArgs,然后我就能够传递类本身。 我知道我可以在这里做同样的事情,创建一个扩展EventArgs的不同类,然后在类中创建枚举,字段和属性。 […]

如何显示枚举显示属性的名称

这是我的枚举。 public enum ContractType { [Display(Name = “Permanent”)] Permanent= 1, [Display(Name = “Part Time”)] PartTime= 2, } 我尝试使用下面的代码获取显示名称。 string x = Enum.GetName(typeof(ContractType), 2); 但它始终是返回“ PartTime ”。 其实我想得到display属性的名称。 对于上面的例子,x应该被指定为Part Time 我看到有大量代码的解决方案。 这不是一个简单的/一线解决方案吗? 请告诉我一个方向。

将字符串转换回枚举

有更干净,更聪明的方法吗? 我正在点击数据库来获取数据以填充对象并将数据库字符串值转换回其枚举(我们可以假设数据库中的所有值都是匹配枚举中的值) 有问题的行是下面的行设置EventLog.ActionType …我开始质疑我的方法的原因是因为在等号之后,VS2010一直试图通过这样做来覆盖我正在输入的内容:“= EventActionType(” using (….) { while (reader.Read()) { // eventLog.ActionType = (EventActionType)Enum.Parse(typeof(EventActionType), reader[3].ToString()); …etc…

为什么没有非整数枚举?

为什么不能创建非整数枚举? 我想知道这是一个语言设计决策,还是在编译器中实现这个问题。 换句话说,在语言中实现非整数枚举是否可行,但是没有合理的需要? 或者如果它不可行但是合理,那么会遇到什么障碍? 有人告诉我,在C#中没有这个的原因或理由很简单,非常高兴。

从c#enums中获取价值

我有一个枚举 public enum ProductionStatus { Received = 000, Validated = 010, PlannedAndConverted = 020, InProduction = 030, QAChecked = 040, Delivered = 070, RejectedOrCancelled = 100 } 我需要从这个枚举中获取键值,例如选择ProductionStatus.Validated它应该返回010.我该怎么做?

枚举的范围是多少?

例如,在C#中,您可以在枚举类型中使用数字范围吗? public enum BookType { Novel = 1, Journal = 2, Reference = 3, TextBook = 4 .. 10 } 编辑:需要的原因是从数字转换为枚举类型,例如: int iBook = 5 BookType btBook = (BookType)ibook Debug.Print “Book ” + ibook + ” is a ” btBook 预期的输出是:第5册是一本教科书

InvalidCastException尝试从盒装int转换为可为空的枚举

我有一个枚举, Foo : public enum Foo { Alpha, Bravo, Charlie } 如果我尝试从盒装int到Foo?的以下演员Foo? ,我得到一个InvalidCastException : var x = (Foo?)(object)1; 这导致我进行了一些实验…… var x = (Foo)(object)1; // succeeds var x = (long)(object)1; // fails var x = (long?)(object)1; // fails var x = (long)1; // succeeds var x = (long?)1; // succeeds var x = (int)(object)1; // succeeds […]

Multiselect Combobox w / Flags Enum

我希望有人可以帮我解决这个问题。 我以前曾问过类似的问题,但当时我没有开始做任何事情。 我找到了SO问题链接 这与我的问题类似,但它有一个问题。 combobox不显示所选的枚举。 我在我的示例应用程序中的链接中进行了示例,但我不知道如何获取Combobox的文本以显示当前选定的项目。 有人建议怎么办? 我真的坚持这个。 这是我目前的combobox: 我的转换器是: public class WeldingProcessFlagValueConverter : IValueConverter { private WeldingProcess target; public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { WeldingProcess mask = (WeldingProcess)parameter; this.target = (WeldingProcess)value; return ((mask & this.target) != 0); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { […]

枚举设置为字符串并在需要时获取sting值

我不知道该怎么做 我希望代码如下 enum myenum { name1 = “abc”, name2 = “xyz” } 并检查它 if (myenum.name1 == variable) 我该怎么办? 感谢名单。

C#中的字节枚举比较

鉴于此枚举 public enum UserStatus : byte { Approved = 1, Locked = 2, Expire = 3 } 当usr.Status = 1时,为什么这个检查总是返回false if(usr.Status.Equals(UserStatus.Approved)) return true; return false; 比较似乎有效 – 没有编译时错误或运行时exception。 请注意我不是这段代码的作者,并且想知道为什么作者选择了byte类型的枚举以及为什么它不能正常工作。