解决方案 »

  1.   

    你form2和form1在同一个文件夹下吗?
      

  2.   

    private Image _fringe = Image.FromFile(@"Res\fringe_bkg.png");
    这个代码是哪里来的,自动生成的还是手敲的
    你又是如何设置图片的,设计器里指定的还是手敲的
      

  3.   

    代码 是手动敲的,你可以假设它只是一个背景图片,我只是想让所有继承的窗体延用统一背景风格,
    使用相对路径时:
    Application.Run(new Form1()); //可以弹出预期的窗体界面
    Application.Run(new Form2()); //也可以弹出Form1风格的Form2,只是开发界面有错,无法编辑Form2如添加按钮等
    当使用绝对路径时:
    Form2开发界面变成正常无错的了,可以预览Form1界面风格,且可以自由编辑
      

  4.   

    如果你要想开发时显示,那么代码必然是要放在designer文件里
    而designer文件你就不应该手动修改,而应该使用设计器给窗体背景添加图片(图片将作为资源添加进来,而不是通过Image.FromFile的方式动态读取)
      

  5.   

    这个和vs有关,它估计没有处理好这种方式下的工作路径。看起来vs designer加载的时候,工作路径不是你的程序所在,而是IDE的devenv.exe进程所在的地方,就不对了。Application.StartupPath显然也是devenv.exe所在。你需要通过Assembly来定位。不过一般方式是判断处于DesignTime的时候,不加载这些实际的资源。
      

  6.   

    虽然我用C#时间不长,但我相信C#.NET不可能连这个功能都没有吧
    既然用绝对路径可以实现,理论上用相对路径应该也是一样的啊,毕竟文件是真实存在的啊,难道用户想挑一张自己的图片作为通用背景都不可行?
      

  7.   

    只是没搞懂VS在普通情况下都可以使用相对路径访问资源,为什么在涉及继承时却需要绝对路径...
    暂时可用如下方法临时解决开发调试时Form2窗体报错而不可编辑的问题,但由于调用的图片众多,期待能看到更好的解决方案
    #if (DEBUG)
            // 调试用代码
            private Image _fringe = Image.FromFile(@"D:\test\bin\Debug\Res\fringe_bkg.png");
    #else
                // 发布代码
              private Image _fringe = Image.FromFile(@"Res\fringe_bkg.png");
    #endif
      

  8.   

    参考: if (!this.DesignMode)
                {
                    //设置所有继承该窗体的窗体的图标
                    string iconUrl = Application.StartupPath + "\\图片.ico";
                    if (System.IO.File.Exists(iconUrl))
                    {
                        this.Icon = new Icon(Application.StartupPath + "\\图片.ico");
                    }
                }