我正在通过 File.ReadAllText 从文件中加载值,直接进入ListBox1
文件是.txt - 逗号分隔。
HealthyFood.Txt
内容:
乳制品,水果,蔬菜,全谷物
以简单的方式填充Listbox1(LstBox_HealthyCat)(没有应用条件)实际上很少帮助我的Helper-Method,所以我不会重复我的其他文件的代码(:
public string GetFileContent(string FileName)
{
string Filecontent = "";
string ExtTXT = ".txt";
string initialDir = @"G:\RobDevI5-3xRaid-0\Projects\WindowsFormsApplication1\bin\x64\Debug\HealthFood\";
Filecontent = File.ReadAllText(intialDir + FileName + ExtTXT);
return Filecontent;
}
string[] HealthyFood = GetFileContent(HealthyFood).Split(',');
LstBox_HealthyCat.Items.AddRange(HealthyFood);
所以现在结果是ListBoxMainCategory将是
乳制品
水果
蔬菜
全谷物
到目前为止,它是新开发者的好榜样
我的问题是,下一步我想填充 健康食品的子类别,如水果
fruits.txt
内容:
苹果,香蕉,樱桃,日期
所以当我点击主要类别:水果时 它将使用ListBox1的选择填充ListBox2 其余的项目也可以在listBox1中使用(点击时)。
替代
Filecontent = File.ReadAllText(intialDir + FileName + ExtTXT);
Tim Schmelter的代码:
System.IO.Path.Combine(initialDir, item + ExtTXT);
路径合并 ...很好!
答案 0 :(得分:1)
如果您在ListBox1中拥有与该类别相同名称的文件,那么您所要做的就是将此类别传递给您的帮助程序函数,并使用结果填充ListBox2。
这可以在SelectedIndexChanged事件中轻松完成
private void LstBox_HealthyCat_SelectedIndexChanged(object sender, System.EventArgs e)
{
// Get the currently selected item in the ListBox.
string curCategory = LstBox_HealthyCat.SelectedItem.ToString();
string[] subCatItems = GetFileContent(curCategory).Split(',');
// Clear the previous list of foods from the second listbox
ListSubCategory.Items.Clear();
ListSubCategory.Items.AddRange(subCatItems);
}
请记住,此示例假定您在GetFileContent方法中的initialDir
变量标识的文件夹中包含以下文本文件
答案 1 :(得分:1)
因此,如果我正确理解您的要求,您希望根据ListBox1的SelectedItem填充第二个ListBox。例如,如果选择fruit
,则应使用fruits.txt
,依此类推。那么这可能会对你有所帮助:
const string initialDir = @"G:\RobDevI5-3xRaid-0\Projects\WindowsFormsApplication1\bin\x64\Debug\HealthFood\";
const string ExtTXT = ".txt";
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
listBox2.Items.Clear();
foreach (String item in listBox1.SelectedItems)
{
String path = System.IO.Path.Combine(initialDir, item + ExtTXT);
if(System.IO.File.Exists(path))
{
listBox2.Items.AddRange(System.IO.File.ReadAllText(path).Split(','));
}
}
}