如何解决C#中的System Argument异常错误?

时间:2014-05-16 05:15:05

标签: c# winforms visual-studio-2012

由于此处声明的文件路径,我收到错误:

private UIImageRes onClickImage = new UIImageRes(@"..\..\Resources\check_active.png",new Rectangle());

然而,当我宣布实际路径时,它起作用,即

private UIImageRes onClickImage = new UIImageRes(@"C:\Desktop\File\Resources\check_active.png",new Rectangle());

现在,这段代码是一个单独的项目,我将其添加到我的新项目中。我不认为将确切的文件路径放在那里是一个好主意。我将不得不更改多个源代码中的所有文件路径。此外,如果我将项目复制到另一个文件夹,该项目将无法正常工作。我该怎么办呢?

编辑:

我是C#的新手,在C ++和java

方面有一定的学术经验

2 个答案:

答案 0 :(得分:0)

解决方案1 ​​

如果您希望两个项目都使用固定路径,则可以使用 INI文件来存储路径。这有助于在不更改源代码的情况下更改路径。

解决方案2

使用Application.StartupPath构建路径。

例如:

string sRelativePath = System.IO.Path.Combine(Application.StartupPath, @"Resources\check_active.png");
private UIImageRes onClickImage = new UIImageRes(sRelativePath,new Rectangle());

Application.StartupPath 给出启动应用程序的可执行文件的路径,不包括可执行文件名。

<强>更新

假设Project1.exe位于此处:

C:\Desktop\File\Project1.exe

Application.StartupPath返回:

C:\Desktop\File

使用时:

string sRelativePath = System.IO.Path.Combine(Application.StartupPath, @"Resources\check_active.png");

输出将在sRelativePath字符串中:

C:\Desktop\File\Resources\check_active.png

答案 1 :(得分:0)

实际上,当我使用C#处理图像处理时出现此错误。然后,我将所需的dll复制到项目的bin文件夹中,问题就解决了。例如,cudart32_55.dll是图像处理所需的dll之一。我没有包含这个DLL并尝试运行代码,然后我得到了System.Argument异常。因此,请确保您放置所有必需的dll以摆脱System.Arguments Exception。

这对我有用,这就是我所经历的。我建议你尝试一次。