我一直无法点击列表框项(列表框中的项是文件夹中的.txt文件),并在.txt文件中显示值。 .txt文件中的值都用“,”分隔,我希望每个“拆分”项都显示在表单上的标签中。 我的文件路径是:System.AppDomain.CurrentDomain.BaseDirectory +“数据” 我的.txt文件名是我的列表框中所选项目的名称。
我对应该发生的事情有基本的了解,但是我不知道如何在代码中表达这一点。 我的代码:
private void custList_MouseClick(object sender, MouseEventArgs e)
{
string foldr = System.AppDomain.CurrentDomain.BaseDirectory + "data";
string file = custList.SelectedIndex.ToString();
}
先感谢
答案 0 :(得分:1)
在我继续回答这个问题之前,请阅读How to ask。这将帮助您更好地了解这个社区并提出更好的问题(以获得更好的支持)。 接下来,进行一些研究。乍看之下,您似乎正在要求某人为您做作业。无论如何,我不是要对你强硬。我会指出一些事情。尝试了解它们并加以利用。
请注意,尽管看起来可能如此,但我不喜欢用勺子喂食,所以要真诚地做研究。
让我们从您的文本文件开始。如您所述,它包含值。 C#是一种通用且成熟的语言,它具有许多预先构建的功能,方法,类,可以帮助您提高编程经验。这样的方法是ReadAllText,它是File
类的一部分。用最简单的话来说,该方法打开一个文本文件,读取它,返回它的值。此方法的示例用法可能是:
string TextFromFile = File.ReadAllText(File_Path_Goes_Here);
继续...您的文本文件具有多个值,以逗号(,)分隔。在这种情况下,在检索或显示时,每个值都需要读取为一个单独的值。因此,您需要List
的值,故事的结尾。在C#中,您可以使用多种generic lists。由于文本文件中的 values 是简单的字符串,因此您可以在这方面使用List<string>
。 List<string>
的基本用法示例为:
List<string> TestList1 = new List<string>();
TestList1.Add("First Value"); TestList1.Add("Second Value");
///or
List<string> TestList1 = new List<string>(){ "First Value", "Second Value" };
在您的特定情况下,File.ReadAllLines
是一个例子。该方法打开一个文本文件,读取它,然后关闭它。当然,它返回从文本文件读取的值作为数组。因此,将值传递到通用列表时,您可以简单地使用此方法。示例:
...... new List<string>(File.ReadAllLines(Path_Of_File_Goes_Here));
这里唯一的区别是文本文件中的值位于一行(也许)中,并且也用逗号隔开。那么,您认为这里应该做什么? ReadAllText
或ReadAllLines
?我会把它留给你。
一旦从文件中读取了值,我们就可以使用Split
函数在每次出现逗号(,)时拆分这些值。一个简单的例子:
List<string> NameList = "Josh,Riley".Split(',').ToList<string>();
最后但并非最不重要的一点是,该问题的标题似乎与帖子本身无关,这是您可以查看的内容:
提示:SelectedItem
类的ListBox
属性返回或设置列表框的选定项目。
我希望这会有所帮助。请注意上面提到的所有内容。一开始可能会有些困难,但是请记住,一致性是缺乏想象力的标志。
....是的,那不是我的报价。知道了!
答案 1 :(得分:0)
我不知道您想在哪里显示文本文件的值,所以我只向您提供检索这些信息所需的内容。
要从文件中获取值:
public string[] GetValues()
{
string[] values;
using(StreamReader sr = new StreamReader(Path.Combine(foldr, file))
{
string text = sr.ReadToEnd();
values = text.Split(',');
}
return values;
}
然后您可以使用数组显示它们:
public void Main()
{
string[] values = GetValues();
foreach(var value in values)
{
Console.WriteLine(value);
}
}
希望这会有所帮助。