C# 更改图片框图片

C# 更改图片框图片,c#,winforms,C#,Winforms,我在表单中添加了图片框并导入了2张图片,在应用程序启动时,我从图像属性下的属性中选择第一张图片,在启动按钮事件中我想将我的图片更改为另一张图片。 这就是我所尝试的: pbIndicator.Image = Image.FromFile(@"..\Resources\indicator_green.png"); 但出现“未找到文件”异常错误。请确保在属性窗口中,如果生成操作已启用内容,并且复制到输出目录已启用如果更新 如果你想让它满足。否则,请使用阴影向导给出的答案。确保在属性窗口中,如果生成操

我在表单中添加了图片框并导入了2张图片,在应用程序启动时,我从
图像
属性下的属性中选择第一张图片,在
启动按钮事件中
我想将我的图片更改为另一张图片。 这就是我所尝试的:

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

但出现“未找到文件”异常错误。

请确保在属性窗口中,如果
生成操作
已启用
内容
,并且
复制到输出目录
已启用
如果更新


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

确保在属性窗口中,如果
生成操作
处于启用状态,并且
复制到输出目录
处于启用状态,如果更新


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

您应该能够执行以下操作:

pbIndicator.Image = Resources.indicator_green;

您应该能够执行以下操作:

pbIndicator.Image = Resources.indicator_green;

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

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

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

当然,您不会被迫将资源嵌入程序集中。如果要将它们部署为独立文件,只需右键单击资源文件夹并添加现有文件。在该文件的属性窗口中,选择Copy always for Copy to output directory(复制到输出目录)并等等,您可以通过以下方式读取该文件:

pbIndicator.Image = Image.FromFile(@"Resources\indicator_green.png");
请注意,
Resources
文件夹不会是输出目录的子目录(不要忘记源文件不是安装的一部分)

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

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

您不局限于
资源
文件夹,您可以使用任何文件夹(和任何名称)来实现这一点。

如我在评论中所述,如果
指示器为绿色.jpg
是通过资源文件(
资源.resx
)作为资源包含的图像,则不会将其复制到输出目录(这意味着它位于项目文件夹中,因为它用于构建可执行文件,但它将嵌入程序集中,而不是单独部署)

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

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

当然,您不必将资源嵌入程序集中。如果要将其部署为独立文件,只需右键单击“资源文件夹”并添加现有文件。在该文件的“属性”窗口中,选择“复制到输出目录”的“复制始终”,然后选择“等等”,您就可以使用以下工具读取该文件:

pbIndicator.Image = Image.FromFile(@"Resources\indicator_green.png");
请注意,
Resources
文件夹不会是输出目录的子目录(不要忘记源文件不是安装的一部分)

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

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

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

位置来自my Resources.resxi如果它是一个资源(仅更新名称空间),请执行以下操作:pbIndicator.Image=Properties.Resources.indicator\u green;资源不会复制到输出目录(您甚至不需要这样做,因为它们将嵌入到您的可执行文件中,因为在resources.resx中引用了它们)。向我们显示第一张图片的url和用于加载第二张图片的url。您无法达到使用
资源
的目的。请查看阴影向导的答案该位置来自我的资源。resxIf它是一个资源(只需更新命名空间)执行此操作:pbIndicator.Image=Properties.Resources.indicator_green;资源不会被复制到输出目录(您甚至不需要执行此操作,因为它们将嵌入到可执行文件中,因为在Resources.resx中引用)。向我们显示第一张图片的url和用于加载第二张图片的url。您无法使用
资源
。请查看阴影向导的答案