2017-02-16 7 views
0

[追加されましたForm1()コンストラクタUPDATE]を動作するようには思えません。私は今まで何をやったかマッチング列挙型は

は次のようになります。

public Form1() 
{ 
    formatWorker.DoWork += worker_DoWork; 
    formatWorker.RunWorkerCompleted += worker_RunWorkerCompleted; 

    extractWorker.DoWork += extractWorker_DoWork; 
    extractWorker.ProgressChanged += extractWorker_ProgressChanged; 
    extractWorker.RunWorkerCompleted += extractWorker_RunWorkerCompleted; 

    InitializeComponent(); 
    projectBox.DataSource = Constant.projects.ToString(); 
    projectBox.SelectedIndex = (int)Regions.Project.NBTevo; 
    PopulateUsbDevices(); 
} 

class Regions 
{ 
    public enum Project 
    { 
     NBT = 0, 
     NBTevo = 1, 
     MGU = 2 
    } 

    string[] regions = { "ARG", "AUSNZ", "ECE", "IND", "ISR", "LA", "ME", "NA", "NAF", "NANT", "PAL", "SEA", "TC", "ZA" }; 

    public string[] GetRegionsForProject(Project proj) 
    { 
     //all directories from /Databases/proj[i] 
     string[] allDirectories = Constant.ExtractFileNames(Directory.GetDirectories(Constant.path + "//" + Constant.projects[(int)proj])); 


     string[] availableSubDirectories = Enumerable.Intersect(allDirectories, regions).ToArray(); 

     return availableSubDirectories; 
    } 
} 

次のクラス店(このクラスは、enum Projectに応じて、私はコンボボックスに格納するいくつかのregion[]値を、持っています)特定のパターンは、私がで選択した値に応じて、例えば、依存関係を構築しようとしています

class DBVersion 
{   
    public string[] GetVersion(string proj, string region) 
    { 
     string pattern = "^" + proj + "_" + region + "_" + @"(\d+\.\d+\.\d+_[a-zA-Z0-9_]+)\.iso$"; 
     string[] files = Directory.GetFiles(Constant.path + "\\" + proj + "\\" + region + "\\images\\", "*.iso", SearchOption.AllDirectories); 
     return files; 

    } 
} 

ファイルあなたが使用する必要がありますComboBoxDataSourceをバインドしたい場合はとregionBoxいくつかのバージョンが実行した後versionBox

private void projectBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    isoPaths.Clear(); 
    populateRegions((Regions.Project)Enum.Parse(typeof(Regions.Project), projectBox.SelectedValue.ToString())); 
    regionBox.SelectedIndex = 0; 
    regionBox_SelectedIndexChanged(null, null); 
} 

private void regionBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string[] versionPaths = version.GetVersion(projectBox.SelectedValue.ToString(), regionBox.SelectedItem.ToString()); 

    isoPaths.Clear(); 
    isoPaths.AddRange(versionPaths); 

    populateVersions(Constant.ExtractFileNames(versionPaths)); 
    //versionBox.SelectedIndex = 0; 
    //versionBox_SelectedIndexChanged(null, null); 
} 

private void versionBox_SelectedIndexChanged(object sender, EventArgs e) 
{ 

} 
private void populateRegions(Regions.Project proj) 
{ 

    this.regionBox.DataSource = region.GetRegionsForProject(proj); 
} 

private void populateVersions(string[] versions) 
{ 
    this.versionBox.DataSource = version.GetVersion(
        projectBox.SelectedItem.ToString(), 
        region‌​Box.SelectedItem.ToS‌​tring()); 
} 

に表示されます、私はComboBox

+0

コンボボックスを配置したり、そのデータソースをバインドするコードはありません。私の目はちょうど疲れているかもしれません。 –

+0

あなたは正しいです。 'ます。private void populateRegions(Regions.ProjectのPROJ) { this.regionBox.DataSource = region.GetRegionsForProject(PROJ):これは私が行う方法がわからないことですが、 –

+0

不明であるために申し訳ありません私は2つのメソッドを持っています; } プライベートvoid populateVersions(string []バージョン) { this.versionBox.DataSource = version.GetVersion(projectBox.SelectedItem.ToString()、regionBox.SelectedItem.ToString()); } 'しかし、私はそれらを一緒に置くことができません –

答えて

1

に保存されているものがありません:

IListインターフェイスまたは配列を実装するオブジェクト

ComboBox.DataSource Property documentation

によるのでForm1のコンストラクタでこの行:

projectBox.DataSource = Constant.projects.ToString(); 

このに変更する必要があります。

projectBox.DataSource = Constant.projects; 

コンボボックスの残りの部分は空であるため、問題次から次へカスケードします。空であれば残りは適切に埋めることができません