草庐IT

c# - 将枚举绑定(bind)到 WinForms 组合框,然后设置它

很多人已经回答了如何在WinForms中将枚举绑定(bind)到组合框的问题。是这样的:comboBox1.DataSource=Enum.GetValues(typeof(MyEnum));但如果无法设置要显示的实际值,那将毫无用处。我试过:comboBox1.SelectedItem=MyEnum.Something;//Doesnotwork.SelectedItemremainsnull我也试过:comboBox1.SelectedIndex=Convert.ToInt32(MyEnum.Something);//ArgumentOutOfRangeException,Sele

c# - 为什么标志枚举通常用十六进制值定义

很多时候我看到使用十六进制值的标志枚举声明。例如:[Flags]publicenumMyEnum{None=0x0,Flag1=0x1,Flag2=0x2,Flag3=0x4,Flag4=0x8,Flag5=0x10}当我声明一个枚举时,我通常这样声明:[Flags]publicenumMyEnum{None=0,Flag1=1,Flag2=2,Flag3=4,Flag4=8,Flag5=16}为什么有些人选择用十六进制而不是十进制来写值,这有什么原因或依据吗?在我看来,使用十六进制值时更容易混淆,不小心写了Flag5=0x16而不是Flag5=0x10。

c# - 为什么标志枚举通常用十六进制值定义

很多时候我看到使用十六进制值的标志枚举声明。例如:[Flags]publicenumMyEnum{None=0x0,Flag1=0x1,Flag2=0x2,Flag3=0x4,Flag4=0x8,Flag5=0x10}当我声明一个枚举时,我通常这样声明:[Flags]publicenumMyEnum{None=0,Flag1=1,Flag2=2,Flag3=4,Flag4=8,Flag5=16}为什么有些人选择用十六进制而不是十进制来写值,这有什么原因或依据吗?在我看来,使用十六进制值时更容易混淆,不小心写了Flag5=0x16而不是Flag5=0x10。

c# - 如何迭代具有标志的枚举值?

如果我有一个包含标志枚举的变量,我能否以某种方式迭代该特定变量中的单位值?或者我是否必须使用Enum.GetValues遍历整个枚举并检查设置了哪些枚举? 最佳答案 staticIEnumerableGetFlags(Enuminput){foreach(EnumvalueinEnum.GetValues(input.GetType()))if(input.HasFlag(value))yieldreturnvalue;} 关于c#-如何迭代具有标志的枚举值?,我们在StackOverf

c# - 如何迭代具有标志的枚举值?

如果我有一个包含标志枚举的变量,我能否以某种方式迭代该特定变量中的单位值?或者我是否必须使用Enum.GetValues遍历整个枚举并检查设置了哪些枚举? 最佳答案 staticIEnumerableGetFlags(Enuminput){foreach(EnumvalueinEnum.GetValues(input.GetType()))if(input.HasFlag(value))yieldreturnvalue;} 关于c#-如何迭代具有标志的枚举值?,我们在StackOverf

c# - 如何使用枚举值的自定义字符串格式设置枚举绑定(bind)组合框?

在帖子中EnumToString,描述了一种使用自定义属性DescriptionAttribute的方法,如下所示:EnumHowNice{[Description("ReallyNice")]ReallyNice,[Description("KindaNice")]SortOfNice,[Description("NotNiceAtAll")]NotNice}然后,您调用函数GetDescription,使用如下语法:GetDescription(NotNice);//Returns"NotNiceAtAll"但是当我想简单地用枚举值填充ComboBox时,这并不能真正帮助我,因为我

c# - 如何使用枚举值的自定义字符串格式设置枚举绑定(bind)组合框?

在帖子中EnumToString,描述了一种使用自定义属性DescriptionAttribute的方法,如下所示:EnumHowNice{[Description("ReallyNice")]ReallyNice,[Description("KindaNice")]SortOfNice,[Description("NotNiceAtAll")]NotNice}然后,您调用函数GetDescription,使用如下语法:GetDescription(NotNice);//Returns"NotNiceAtAll"但是当我想简单地用枚举值填充ComboBox时,这并不能真正帮助我,因为我

c# - 获取枚举的最大值

如何获取枚举的最大值? 最佳答案 Enum.GetValues()似乎按顺序返回值,因此您可以这样做://giventhisenum:publicenumFoo{Fizz=3,Bar=1,Bang=2}//thisgetsFizzvarlastFoo=Enum.GetValues(typeof(Foo)).Cast().Last();编辑对于那些不愿意阅读评论的人:你也可以这样做:varlastFoo=Enum.GetValues(typeof(Foo)).Cast().Max();...当您的某些枚举值为负时,这将起作用。

c# - 获取枚举的最大值

如何获取枚举的最大值? 最佳答案 Enum.GetValues()似乎按顺序返回值,因此您可以这样做://giventhisenum:publicenumFoo{Fizz=3,Bar=1,Bang=2}//thisgetsFizzvarlastFoo=Enum.GetValues(typeof(Foo)).Cast().Last();编辑对于那些不愿意阅读评论的人:你也可以这样做:varlastFoo=Enum.GetValues(typeof(Foo)).Cast().Max();...当您的某些枚举值为负时,这将起作用。

c# - 枚举定义中的波浪号 (~) 是什么?

我总是很惊讶,即使现在一直使用C#,我仍然设法找到我不知道的东西......我试过在互联网上搜索这个,但是在搜索中使用“~”对我来说效果不佳,而且我在MSDN上也没有找到任何东西(并不是说它不存在)最近看到这段代码,波浪号(~)是什么意思?//////Enumeratesthewaysacustomermaypurchasegoods.///[Flags]publicenumPurchaseMethod{All=~0,None=0,Cash=1,Check=2,CreditCard=4}看到它我有点惊讶,所以我尝试编译它,它成功了……但我仍然不知道它的意思/作用。有帮助吗??