我在我的表单中添加了图片框并导入了 2 张图片,从属性下的image
属性中,我在应用程序启动时选择了第一张图片,在我的内部我start button event
想将我的图片更改为另一张图片。这是我尝试过的:
pbIndicator.Image = Image.FromFile(@"..\Resources\indicator_green.png");
但出现找不到文件异常错误。
你应该能够做这样的事情:
pbIndicator.Image = Resources.indicator_green;
确保在属性窗口中,如果Build Action
是 on Content
,并且Copy to Output Directory
是 on Copy if newer
。
如果你想让它满足。否则使用影子向导给出的答案。
正如我在评论中所写,如果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
文件夹,您可以使用任何文件夹(以及任何名称)来执行此操作。