0

我在我的表单中添加了图片框并导入了 2 张图片,从属性下的image属性中,我在应用程序启动时选择了第一张图片,在我的内部我start button event想将我的图片更改为另一张图片。这是我尝试过的:

pbIndicator.Image = Image.FromFile(@"..\Resources\indicator_green.png");

但出现找不到文件异常错误。

4

3 回答 3

2

你应该能够做这样的事情:

pbIndicator.Image = Resources.indicator_green;
于 2013-09-16T07:52:40.323 回答
1

确保在属性窗口中,如果Build Action是 on Content,并且Copy to Output Directory是 on Copy if newer

如果你想让它满足。否则使用影子向导给出的答案。

于 2013-09-16T07:52:22.810 回答
0

正如我在评论中所写,如果indicator_green.jpg图像是通过资源文件(Resources.resx)作为资源包含的,那么它不会被复制到输出目录(这意味着它在您的项目文件夹中,因为它用于构建可执行文件,但它会嵌入到您的程序集,而不是独立部署)。

资源文件将(默认情况下)将您添加到Resources文件夹中的资源(然后链接)。您始终可以使用生成的资源代码文件访问它们:

pbIndicator.Image = Properties.Resources.indicator_green;

您可以根据项目中的内容更改命名空间Properties和属性名称(默认情况下,属性名称与资源名称相同,然后与原始文件名称相同)。

当然,您不必将资源嵌入程序集中。如果要将它们部署为独立文件,只需右键单击资源文件夹并添加现有文件。在该文件的属性窗口中,为复制到输出目录选择始终复制,然后瞧,您将能够阅读它:

pbIndicator.Image = Image.FromFile(@"Resources\indicator_green.png");

请注意,该Resources文件夹不会是您的输出目录的子目录(不要忘记源文件不是安装的一部分)。

无论如何我建议你不要建立这样的路径,最好不要依赖当前文件夹:

pbIndicator.Image = Image.FromFile(
    Path.Combine(Application.StartupFolder, @"Resources\indicator_green.png");

您不限于Resources文件夹,您可以使用任何文件夹(以及任何名称)来执行此操作。

于 2013-09-16T07:56:39.827 回答