解决方案同目录下有一个images文件夹,我想点击按钮时将其他位置的图片文件复制到其中。可复制文件使用的函数又要求给出文件最终的存放位置。为了让程序不加修改地直接在其他计算机中运行,我打算用相对路径表示images文件夹的位置。我的思路是:先获取当前解决方案的路径,再映射到images文件夹。在Form_Load事件中,我实现了images文件夹的路径。可我是想在单击按钮里再获取路径,于是我就把Form_Load事件里的获取路径的代码直接复制到按钮的单击事件里。而最终按钮事件里获取的路径和Form_Load事件里获取的路径却不一样。这是怎么回事呢?该如何解决?

解决方案 »

  1.   

    给你一段函数,调用即可: /// <summary>
    /// 获得当前绝对路径
    /// </summary>
    /// <param name="strPath">指定的路径</param>
    /// <returns>绝对路径</returns>
    public static string GetMapPath(string strPath)
    {
    if (HttpContext.Current != null)
    {
    return HttpContext.Current.Server.MapPath(strPath);
    }
    else //非web程序引用
    {
    return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
    }
    }
      

  2.   

    调试时提示“当前上下文中不存在名称‘HttpContext’是怎么回事?
      

  3.   

    说明你不是WEB项目,你可以手动添加项目的引用,这是HttpContext的信息:
    Namespace:  System.Web
    Assembly:   System.Web (in System.Web.dll)如果你创建WEB站点,或者创建WEB应用程序,那个System.Web会自动添加到项目引用中的。
      

  4.   

    我写的是Windows程序,用上面的方法不行呀?
      

  5.   

    使用Application.StartupPath; 不行?