在C#上将文件导入特定文件夹

时间:2012-06-03 17:59:42

标签: c# visual-studio-2010

  

可能重复:
  Getting the application's directory from a WPF application

我想从项目目录中获取文件,就像在java中一样,而不使用“C:\ Path”,因为它在我的图片框中创建了文件异常,这是我的计时器中的代码

if (imagecount == 30)
{
    this.pictureBox1.Image = System.Drawing.Image.FromFile(@"C:\Users\Baloi\Documents\visual studio 2010\Projects\WinEX\WinEX\" + image() + ".jpg");
    imagecount = 0;
}

else if (imagecount < 30)
    imagecount++;

3 个答案:

答案 0 :(得分:2)

Aplication directory

string baseDirectory = AppDomain.CurrentDomain.BaseDirectory;

Executable Directory

string executableDirectory = Path.GetDirectoryName(Application.ExecutablePath);

根据您的要求,您可以使用上述Path.Combine之一,并构建图片位置的完整路径。

或者您可以将图像嵌入资源文件中。然后你可以加载它们

Stream imgStream = 
    Assembly.GetExecutingAssembly().GetManifestResourceStream(
    "YourNamespace.resources.ImageName.bmp");
pictureBox.Image = new Bitmap(imgStream);

答案 1 :(得分:0)

您可以使用以下代码:

this.pictureBox1.Image = System.Drawing.Image.FromFile(image() + ".jpg");

您的文件应与程序位于同一文件夹中。

答案 2 :(得分:0)

您有几个选择:

  1. 将图片嵌入项目中(将编译操作设置为嵌入数据)

  2. 使用相对路径引用图片。由于在调试时二进制程序集位于bin \ Debug文件夹中

  3. ,这一点很复杂。

    对于选项1:

    System.Reflection.Assembly thisExe;
    thisExe = System.Reflection.Assembly.GetExecutingAssembly();
    System.IO.Stream file = 
        thisExe.GetManifestResourceStream("AssemblyName.ImageFile.jpg");
    this.pictureBox1.Image = Image.FromStream(file);
    

    http://msdn.microsoft.com/en-us/library/aa287676(v=vs.71).aspx

    对于选项2:

    string appPath = Path.GetDirectoryName(Application.ExecutablePath);
    if (System.Diagnostics.Debugger.IsAttached)
    {
        contentDirectory = Path.Combine(appPath + @"\..\..\content");
    }
    else
    {   
        contentDirectory = Path.Combine(appPath, @"content");
    }