11

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

私の問題: プログラムの実行中にその場でデータを取得します。ネットワークアダプターを読み取り、アダプター名をmyArray次のように保存します。

string[] myArray = new string[] { };
myArray[0] = "Ethernet";
myArray[1] = "Wireless";
myArray[2] = "Bluetooth";

myArrayc#を使用してmyEnumオンザフライに変換できますか? ありがとうございました。

4

5 に答える 5

11

もちろん!必要なのはこれだけです。

IEnumerable<myEnum> items = myArray.Select(a => (myEnum)Enum.Parse(typeof(myEnum), a));
于 2012-12-12T14:49:00.060 に答える
3

使用したいでしょうEnum.Parse: http://msdn.microsoft.com/en-us/library/essfb559.aspx

MyProperty = (myEnum)Enum.Parse(typeof(myEnum), myArray[0]);

それをアレイでどのように使用するかは、ニーズ次第だと思います。

編集: 万が一、最初にアダプタ名を列挙として配列に格納することは可能ですか? 配列が文字列でなければならない理由はありますか?

于 2012-12-12T14:32:09.990 に答える
1

列挙型の値の名前を取得する場合は、Parse を使用する必要はありません。を使用しないでください.ToString()。代わりにこれを使用してください。たとえば、戻りたい場合Ethernetは次のようにします。

public enum myEnum
{
    Ethernet,
    Wireless,
    Bluetooth
}

メイン クラスに次のコード行を追加します。

var enumName = Enum.GetName(typeof(myEnum), 0); //Results = "Ethernet"

列挙値を列挙したい場合は、これを実行して値を取得できます。

foreach (myEnum enumVals in Enum.GetValues(typeof(myEnum)))
{
    Console.WriteLine(enumVals);//if you want to check the output for example
}
于 2012-12-12T14:50:35.787 に答える
0

Enum.Parse配列内の各要素のループで使用します。

于 2012-12-12T14:31:57.490 に答える