new*_*bie 9 c# arrays propertygrid enums winforms
我绑定enum到这样的属性网格:
public enum myEnum
{
Ethernet,
Wireless,
Bluetooth
}
public class MyClass
{
public MyClass()
{
MyProperty = MyEnum.Wireless;
}
[DefaultValue(MyEnum.Wireless)]
public MyEnum MyProperty { get; set; }
}
public Form1()
{
InitializeComponent();
PropertyGrid pg = new PropertyGrid();
pg.SelectedObject = new MyClass();
pg.Dock = DockStyle.Fill;
this.Controls.Add(pg);
}
Run Code Online (Sandbox Code Playgroud)
我的问题:我在程序运行时动态获取数据.我读了网络适配器然后存储适配器名称,myArray如下所示:
string[] myArray = new string[] { };
myArray[0] = "Ethernet";
myArray[1] = "Wireless";
myArray[2] = "Bluetooth";
Run Code Online (Sandbox Code Playgroud)
可以使用c#转换myArray为动态myEnum吗?谢谢.
当然!这就是你所需要的:
IEnumerable<myEnum> items = myArray.Select(a => (myEnum)Enum.Parse(typeof(myEnum), a));
Run Code Online (Sandbox Code Playgroud)
TryParse()如果您的源数据不是完全可靠的,您可能需要考虑仅使用和转换实际可以解析的项目IsDefined()。
从字符串数组中获取 myEnums 数组可以通过以下代码执行:
myEnum [] myEnums = myArray
.Where(c => Enum.IsDefined(typeof(myEnum), c))
.Select(c => (myEnum)Enum.Parse(typeof(myEnum), c))
.ToArray();
Run Code Online (Sandbox Code Playgroud)
请注意,IsDefined()仅适用于单个枚举值。如果您有一个[Flags]枚举,则组合将无法通过测试。
| 归档时间: |
|
| 查看次数: |
15685 次 |
| 最近记录: |