0
[更新:新增Form1()
構造]與組合框列表匹配枚舉似乎並沒有工作
我試圖在Windows窗體應用程序匹配來自某些clases一些數據組合框的值。
我做了什麼到現在爲止是這樣的:
(這個類有一些region[]
價值觀,我想在一個下拉框來存儲,這取決於enum Project
)
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;
}
}
下一個類存儲一定的模式文件
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;
}
}
我想建立一個依賴,例如,取決於所選的值在projectBox
個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(),
regionBox.SelectedItem.ToString());
}
運行後,我沒有存儲在ComboBox
我沒有看到任何代碼在哪裏填充組合框或綁定它的'DataSource'。可能是我的眼睛太累了。 –
你是對的。這是我不知道該怎麼做的事,對不起,我不清楚 –
我有兩種方法: 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(),regionBox.SelectedItem.ToString()); } '但我似乎無法將它們放在一起 –