You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# Windows Forms:如何用按钮切换PictureBox中的图片

实现PictureBox图片切换功能的解决方案

很容易搞定这个需求,我们只需要一个简单的状态标记来跟踪当前显示的图片,再配合按钮点击事件完成切换逻辑就行,具体步骤如下:

步骤1:添加状态跟踪变量

首先在你的Form1类里添加一个私有布尔变量,用来记录当前是否显示第一张图片:

private bool isShowingFirstImage = true; // 标记当前是否显示第一张图

步骤2:窗体启动时加载默认图片

在窗体的构造函数里,初始化完组件后,加载resources文件夹里的第一张图片。这里建议用Path.Combine来拼接路径,避免因路径分隔符导致的问题,所以需要先引用System.IO命名空间:

using System.IO; // 记得添加这个命名空间

然后修改构造函数:

public Form1()
{
    InitializeComponent();
    player.URL = "tada.mp3";
    // 窗体启动时加载第一张图片
    string firstImagePath = Path.Combine(Application.StartupPath, "resources", "image1.jpg");
    pictureBox1.Image = Image.FromFile(firstImagePath);
}

注意:把image1.jpg替换成你实际的第一张图片文件名,第二张同理。

步骤3:实现按钮点击的切换逻辑

在changebutton_Click事件方法里,根据状态标记切换图片,并更新标记:

private void changebutton_Click(object sender, EventArgs e)
{
    if (isShowingFirstImage)
    {
        // 切换到第二张图片
        string secondImagePath = Path.Combine(Application.StartupPath, "resources", "image2.jpg");
        pictureBox1.Image = Image.FromFile(secondImagePath);
        isShowingFirstImage = false;
    }
    else
    {
        // 切回第一张图片
        string firstImagePath = Path.Combine(Application.StartupPath, "resources", "image1.jpg");
        pictureBox1.Image = Image.FromFile(firstImagePath);
        isShowingFirstImage = true;
    }
}

完整修改后的代码

这里是整合后的完整Form1.cs代码,我把修改和新增的部分标了注释:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WMPLib;
using System.IO; // 新增:用于路径拼接

namespace WindowsFormsApp4
{
    public partial class Form1 : Form
    {
        WindowsMediaPlayer player = new WindowsMediaPlayer();
        private bool isShowingFirstImage = true; // 新增:状态标记变量

        public Form1()
        {
            InitializeComponent();
            player.URL = "tada.mp3";
            // 新增:窗体启动加载第一张图片
            string firstImagePath = Path.Combine(Application.StartupPath, "resources", "image1.jpg");
            pictureBox1.Image = Image.FromFile(firstImagePath);
        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {
            player.controls.play();
        }

        private void changebutton_Click(object sender, EventArgs e)
        {
            // 新增:图片切换逻辑
            if (isShowingFirstImage)
            {
                string secondImagePath = Path.Combine(Application.StartupPath, "resources", "image2.jpg");
                pictureBox1.Image = Image.FromFile(secondImagePath);
                isShowingFirstImage = false;
            }
            else
            {
                string firstImagePath = Path.Combine(Application.StartupPath, "resources", "image1.jpg");
                pictureBox1.Image = Image.FromFile(firstImagePath);
                isShowingFirstImage = true;
            }
        }

        private void Form1_HelpButtonClicked(Object sender, CancelEventArgs e)
        {
            MessageBox.Show("PZP - Przeglądarka zdjęć P0150Na", "Informacje", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
    }
}

额外提示

  • 确保你的resources文件夹和程序的输出目录(比如bin/Debug或bin/Release)在同一层级,或者根据实际情况调整路径。
  • 如果图片文件名或格式不同,记得替换代码里的文件名(比如.png)。
  • 如果担心图片加载失败,可以添加异常处理逻辑,比如用try-catch包裹图片加载代码。

内容的提问来源于stack exchange,提问作者p0150n

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 08:57:48