-
C#问题为什么点击控件第一次正常,第二次就报错了呢10
首先我有一个form 有个单击事件,现在问题是:我第一次点击这个事件的时候,没有任何问题,运行正常,关闭事件弹出的Form后,再次触发这个事件的时候,在 “课件预览ToolStripMenuItem_Click”方法里,运行了catch,try没有走完,我自己调试的时候,发现其在file.CopyDirectorysAndFiles(objipath, dir)位置运行没有通过,之后我又在CopyDirectorysAndFiles方法里加了断点,发现在第一个for循环的位置出现了问题,请大家帮忙分析一下,为什么会这样,我看代码好像没有什么问题啊?怎么会第二次就走到catch去了呢?在这里先谢谢大家了。用到的代码如下:注释部分是我分析认为的问题所在,但是不知道怎么改一下。
后来我把try catch 去掉之后报了“提示未能找到路径“F:\CME Client\CME Client\bin\Debug\flex-player\flex-player\pics”的一部分”这样的异常信息,我把关于delete的相关方法都注释掉之后,也依然没能解决这个问题。
private void 课件预览ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (projectpath != "")
{
saveProject();
//conFilepath 表示的是当前制作工具的运行路径。
String flexPlayerDic=conFilepath=conFilepath+"flex-player\\";
string mainswfpath = flexPlayerDic + "cme_main.swf";
string objmainswfpath = projectpath + "cme_main.swf";
string shotpath = flexPlayerDic + "shot.swf";
string objshotpath = projectpath + "shot.swf";
//string toulanpath = conFilepath + "toulan.swf";
//string objtoulanpath = projectpath + "toulan.swf";
string crossdomain = flexPlayerDic + "crossdomain.xml";
string objcrossdomain = projectpath + "crossdomain.xml";
string configxml = flexPlayerDic + "config.xml";
string objconfigxml = projectpath + "config.xml";
string background = flexPlayerDic + "background.jpg";
string objbackground = projectpath + "background.jpg";
string linkinfo = flexPlayerDic + "linkinfo.swf";
string objlinkinfo = projectpath + "linkinfo.swf";
string linkpath = flexPlayerDic + "pics";
string objipath = projectpath + "pics";
我觉得主要可以从这里开始看起,前面都是一些赋值
FilesHandler file = new FilesHandler();
try
{
file.copyFile(objmainswfpath, mainswfpath);
// file.copyFile(objputongpath, putongpath);
file.copyFile(objcrossdomain, crossdomain);
file.copyFile(objconfigxml, configxml);
file.copyFile(objshotpath, shotpath);
file.copyFile(objbackground, background);
file.copyFile(objlinkinfo, linkinfo);
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(linkpath);
file.CopyDirectorysAndFiles(objipath, dir);\\这个位置第二次没有通过
}
catch
{
MessageBox.Show("文件正在使用,移动失败!请关闭打开的文件,再试一次!", "提示");
}
Form14 win = new Form14();
win.ShowDialog();
File.Delete(objmainswfpath);
File.Delete(objshotpath);
//File.Delete(objtoulanpath);
File.Delete(objcrossdomain);
File.Delete(objbackground);
File.Delete(objlinkinfo);
file.RemoteDelDir(objipath);
}
else
{
MessageBox.Show("还未建立工程!","系统提示");
}
}
这个单击事件里调用的FilesHandler类中的方法如下:
public void CopyDirectorysAndFiles(string dest, System.IO.DirectoryInfo srcdir)
{
string destPath = "";
if (dest.LastIndexOf('\\') != (dest.Length - 1))
{
dest += "\\";
}
if (num == 0)
{
destPath = dest;
}
else
{
destPath = dest + srcdir.Name + "\\";
}
if (!System.IO.Directory.Exists(destPath))
{
System.IO.Directory.CreateDirectory(destPath);
}
System.IO.FileInfo[] files = srcdir.GetFiles();
\\这个循环第二次运行时没有通过,导致click事件运行catch
foreach (System.IO.FileInfo file in files)
{
file.CopyTo(destPath + file.Name, true);
}
num++;
System.IO.DirectoryInfo[] dirs = srcdir.GetDirectories();
foreach (System.IO.DirectoryInfo dirInfo in dirs)
{
CopyDirectorysAndFiles(destPath, dirInfo);
}
}
public bool RemoteDelDir(string FPath)
{
FileInfo RFile = new FileInfo(FPath);
if (RFile.Exists)
{
return SigleFileDel(FPath);
}
else
{
DirectoryInfo Dir = new DirectoryInfo(FPath);
if (!Dir.Exists) return false;
if (Dir.GetFiles().Length <= 0)
{
Dir.Delete();
return true;
}
else
{
foreach (FileInfo file in Dir.GetFiles())
{
string FilePath = file.FullName;
if (!SigleFileDel(FilePath))
return false;
}
Dir.Delete();
return true;
}
}
}
public bool copyFile(string objPath, string currentPath)
{
try
{
// Try to copy the same file again, which should succeed.
if (currentPath != objPath)
File.Copy(currentPath, objPath,true);
}
catch
{
return false; //MessageBox.Show("文件移动失败 :文件正在使用或不存在!");
}
return true;
}
2010年7月13日 11:31
目前还没有答案
相关推荐
c#在线程中使用控件时控件出现红叉解决方法.cs
"C#自定义控件库"是指使用C#语言编写的、由开发者自定义的控件集合,这些控件可以扩展.NET Framework的标准控件集,为用户提供更丰富的界面元素和功能。自定义控件是软件开发中的一个重要环节,特别是在UI设计和用户...
C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的环形动画进度控件 C#,环形,动画,进度控件,C#的...
本资源集合就是专门为C#开发者准备的一系列第三方控件,旨在提升应用的视觉效果和用户体验。 标题中的“C#第三方控件,控件更好看!”意味着这些控件在设计上注重美学,能够帮助开发者创建出更为吸引人的应用程序...
按钮控件是C#语言中最基本和最常用的控件之一,用于在窗体上添加按钮,以便用户可以点击按钮执行某些操作。按钮控件的常用属性包括: * Text:该属性是一个字符串属性,用来设置或返回按钮上的文字。 * Image:用来...
在.NET框架中,WinForms(Windows Forms)是用于构建桌面应用程序的一个强大工具,它提供了丰富的用户界面元素,如开关、仪表和按钮等控件。这些控件使得开发者能够创建交互性强、功能丰富的应用。在本主题中,我们...
本文将深入探讨“C#工业控件集合”,一个专为工业应用设计的自定义控件库,它包含了丰富的可视化元素,如图表、温度计和仪表盘等。 首先,我们来了解**自定义控件**的概念。在软件开发中,自定义控件是开发者根据...
在C#编程中,动态改变控件的位置、大小以及实现拖动功能是常见的需求,尤其在设计用户界面(UI)时。以下将详细介绍如何通过C#实现这些功能,并结合提供的"Panel"控件来举例说明。 1. **控件位置的动态改变**: 在...
本文将深入探讨C#中如何实现控件的拷贝和复制,并提供一个示例程序来帮助理解这一过程。 首先,我们需要了解控件(Control)在C#中的基本概念。控件是Windows Forms或WPF应用程序中可视化元素的基类,如按钮、...
"C# 曲线图坐标系控件"是专为这个目的设计的,它允许开发者在应用程序中绘制曲线图,并且支持自定义坐标系和自动缩放功能。这种控件在数据分析、科学计算、工程应用等领域非常有用。 首先,我们要理解什么是坐标系...
本示例关注的是如何在C#中使用ASP.NET Web应用程序,在一个Panel控件上动态添加控件。这个过程对于创建可自定义、灵活且交互性强的用户界面非常有用。 首先,我们需要理解Panel控件。Panel在ASP.NET中是一个容器...
本示例是关于如何在Visual Studio 2008环境下,实现一个功能,即每点击一次按钮,就动态添加一个新的按钮到界面上。下面将详细介绍这一过程涉及的知识点以及实现方法。 首先,我们需要理解控件的基本概念。在...
本篇文章将详细讨论如何创建一个简单的软键盘控件,并结合给定的“C#简单软键盘控件”标题和描述,深入讲解其核心知识点。 首先,软键盘控件通常用于在触摸屏设备或安全性较高的环境中,替代物理键盘输入。这个软...
注释可以解释关键函数和类的作用,帮助理解如何使用控件,同时为二次开发提供了清晰的指导。二次开发可能包括自定义日志格式、增加新的日志级别、或者实现特定的日志存储策略,如写入数据库、发送电子邮件或上传到云...
在这个场景中,我们讨论的是一个名为"Sidebar"的第三方控件,它为C#开发者提供了一个方便的方式来实现这种抽屉效果。 Sidebar控件可能是一个自定义的UI元素,专门设计用于模仿抽屉的行为,它可以被嵌入到Windows ...
在IT行业中,网络通信是不可或缺的一部分,特别是在分布式系统和客户端-服务器架构中...尽管它可能不适用于所有场景,特别是面对大数据量和高并发的挑战,但它为快速开发提供了便利,是C# TCP通信项目的一个良好起点。
在 C# 编程中,多线程编程是常见的场景之一,特别是在需要实时更新控件内容的情况下。为了解决多线程之间的数据更新问题,本文将介绍如何使用委托(delegate)来更新控件的内容。 首先,需要了解什么是委托...
在本文中,我们将深入探讨如何在C#编程环境中创建和使用LED灯控件,以便模拟电子设备中的灯泡状态,包括开关控制、颜色调整以及亮度调节。LED灯控件是软件开发中的一种可视化元素,它使得用户界面可以直观地反映硬件...
按F5键测试程序,点击第一个控件对应的按钮,然后点击第二个控件的按钮。 通过以上步骤,开发者可以成功地制作和测试自定义控件。这些控件可以在实际项目中使用,提高开发效率和质量。 C#自定义控件的制作需要遵循...
通过以上步骤,我们就可以在C#中创建一个美观且功能齐全的圆形按钮控件。这不仅增加了程序的个性化,也为用户提供了一种更直观的交互方式。在实际开发中,可以根据需要进一步扩展这个控件,比如添加更多的动画效果、...