我正在尝试学习C#,我从一些简单的东西开始。
我正在尝试创建一个简单的程序,它将读取目录中.XLS扩展名的所有文件。我似乎部分工作,但它只读取它看到的文件。
我认为foreach
声明会对此进行处理并列出所有内容,但它似乎无法正常工作。
如果有人能让我朝着正确的方向前进,我会非常感激。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
GetFiles();
}
private void GetFiles()
{
List<String> Myfiles = new List<string>();
string[] allFiles = System.IO.Directory
.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.*");
if (allFiles.Length > 0)
{
try
{
foreach (string filename in allFiles)
{
this.richTextBox1.Text = filename.ToString();
}
}
catch (SystemException excpt)
{
this.richTextBox1.Text = excpt.Message;
}
}
}
答案 0 :(得分:0)
因为您需要xls文件,请更新以下行:
string[] allFiles = System.IO.Directory.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.xls");
您可能会在编辑框中看到一个文件。因此,请更新以下行:
this.richTextBox1.AppendText(filename + Environment.NewLine);
答案 1 :(得分:0)
我认为这可能是由这条线引起的:
this.richTextBox1.Text = filename.ToString();
您每次都会覆盖文本框的文本,导致只将最后一个文件名写入richtextbox
。您应该将文件名字符串附加到richTextBox
而不是分配。
答案 2 :(得分:0)
快速浏览一下我认为你的问题就在这里:
this.richTextBox1.Text = filename.ToString();
您正在为文本属性分配最后一个循环迭代,而不是为每个文件附加一个新行。
尝试调试for循环,你有多次迭代吗?
答案 3 :(得分:0)
xls
的过滤文件:
string[] allFiles = System.IO.Directory.GetFiles(@"C:\Users\Dave\Desktop\STUFF", "*.xls");
并将您的try块代码更新为:
try
{
this.richTextBox1.Text= string.Join(Environment.NewLine, allFiles);
//foreach (string filename in allFiles)
//{
// this.richTextBox1.Text = filename.ToString();
//}
}