3

C# では列挙型を使用しており、それらを文字列としてリストに追加しています。リストをデータグリッドビューにバインドします。datagridview イベントで、セルをクリックしてアクションを実行したい。

行ではなく列挙型をインデックスとして使用するにはどうすればよいですか?

public enum QSystems { WindowsSystem, systemCheck, QDependencies }
_items = new List<string>();
_items.Add(QSystems.WindowsSystem.ToString());
_items.Add(QSystems.systemCheck.ToString());
_items.Add(QSystems.QDependencies.ToString());

そしてデータグリッドビューで

private void dataGridView2_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
    _ckecklist = new List<FileStatus>();

    switch (e.RowIndex) //this is wrong
    {
        case (short)QSystems.WindowsSystem:
            _ckecklist.Clear();
            ShowSystemStatus();
            dataGridView1.DataSource = _ckecklist;
            SetDatagriDview();
            dataGridView1.Show();
            break;

        case (short)QSystems.systemCheck:
            _ckecklist.Clear();   
            ShowNStatus();
            dataGridView1.DataSource = _ckecklist;
            SetDatagriDview();
            dataGridView1.Show();
            break;

        case (short)QSystems.QDependencies:
            _ckecklist.Clear();
            ShowQDependencies();
            dataGridView1.DataSource = _ckecklist;
            SetDatagriDview();
            dataGridView1.Show();
            break;
    }
}
4

2 に答える 2

1

選択された文字列を取得し、解析を使用して列挙値に変換できます。例:

Colors colorValue = (Colors) Enum.Parse(typeof(Colors), colorString);        

もう一つの例:

String WhatDayItIs = DayOfWeek.Monday.ToString();     

DayOfWeek WhatDayItIsDOW;

if (Enum.IsDefined(typeof(DayOfWeek), WhatDayItIs)) 
        WhatDayItIsDOW = (DayOfWeek)Enum.Parse(typeof(DayOfWeek), WhatDayItIs);
于 2012-12-19T13:30:41.587 に答える
0

私はそれを解決します

_items = Enum.GetValues(typeof(QSystems)).Cast<QSystems>().ToList();

dataGridView2.DataSource = _items.Select(x => new { Value = x }).ToList();

これでスイッチの状態が目覚めます:)

于 2012-12-20T10:05:33.377 に答える