在遍历某一个文件夹时,遍历文件夹内的内容,可能在操作过程中会出现错误,这时我们就要把错误弹出来,跳出foreach循环,这时用return时是不管用的,return后只能是结束本次循环,继续下一次循环。这时我们怎么跳出来呢,灵机一动,想起来以前学的goto,于是去网上查了下goto的用法,最后试了一下,果然达到预期效果。这是我第一次用goto哦,哈哈 分享下代码吧 :
//导入按钮触发的事情
private void buttonX2_Click(object sender, EventArgs e)
{
DirectoryInfo dinfo = new DirectoryInfo(textBox1.Text);
FileSystemInfo[] fsinfos = dinfo.GetFileSystemInfos();
//这个foreach是用来验证表格数据输入格式是否正确,如果发现格式不正确,则不执行下面用来导入内容的foreach
foreach (FileSystemInfo fsinfo in fsinfos)
{
if (fsinfo is DirectoryInfo)
{
string a = textBox1.Text + "\\" + fsinfo;
DirectoryInfo dinfo1 = new DirectoryInfo(a);
FileSystemInfo[] fsinfos1 = dinfo1.GetFileSystemInfos();
foreach (FileSystemInfo fsinfo1 in fsinfos1)
{
if (fsinfo1 is DirectoryInfo)//如果是文件夹
{
MessageBox.Show("你的文件夹深度大于3层,本系统只支持2层以内的excel文件");
return;
}
else//如果是excel文件
{
FileInfo finfo1 = new FileInfo(fsinfo1.FullName);
string name = finfo1.Name;
string pathexcel = a + "\\" + finfo1.Name;
int h = panduanexcelgeshi(name, pathexcel);
if (h == 1)
{
goto wuxiao;
}
}
}
}
else
{
FileInfo finfo = new FileInfo(fsinfo.FullName);
//MessageBox.Show("文件信息名称" + finfo.Name);
string name = finfo.Name;
string pathexcel = textBox1.Text.ToString() + "\\" + finfo.Name;
int h = panduanexcelgeshi(name, pathexcel);
if (h == 1)
{
goto wuxiao;
}
}//判断是否为文件的If语句结束
}//forreach结束
//从这个foreach开始是用来导入表格数据的
foreach (FileSystemInfo fsinfo in fsinfos)
{
if (fsinfo is DirectoryInfo)
{
string a = textBox1.Text + "\\" + fsinfo;
DirectoryInfo dinfo1 = new DirectoryInfo(a);
FileSystemInfo[] fsinfos1 = dinfo1.GetFileSystemInfos();
foreach (FileSystemInfo fsinfo1 in fsinfos1)
{
if (fsinfo1 is DirectoryInfo)//如果是文件夹
{
MessageBox.Show("你的文件夹深度大于3层,本系统只支持2层以内的excel文件");
return;
}
else//如果是excel文件
{
FileInfo finfo1 = new FileInfo(fsinfo1.FullName);
string name = finfo1.Name;
string pathexcel = a + "\\" + finfo1.Name;
panduanexcelname(name, pathexcel);
}
}
}
else
{
FileInfo finfo = new FileInfo(fsinfo.FullName);
//MessageBox.Show("文件信息名称" + finfo.Name);
string name = finfo.Name;
string pathexcel = textBox1.Text.ToString() + "\\" + finfo.Name;
panduanexcelname(name, pathexcel);
}//判断是否为文件的If语句结束
}//forreach结束
wuxiao: int erty = 0; //goto跳转到的地方
}//导入按钮触发完毕
这里的wuxiao后的这句话是随便写的,让程序跳到这里随便执行不相干的一句。