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

C# Windows Forms 中如何将UserControl1的图片传递至UserControl2

实现步骤

你只需要做3处简单修改即可完成需求:

1. 修复UserControl1的图片赋值逻辑

你当前在文件选择完成后直接给Panel背景赋值,没有同步到你提前定义的公开Icon属性,修改OpenToolStripMenuItem_Click中的赋值逻辑即可:

if (OFD.ShowDialog() == DialogResult.OK)
{                    
    // 原来的代码:panel1.BackgroundImage = Image.FromFile(OFD.FileName);
    // 改为给Icon属性赋值,会自动同步Panel背景,同时外部可读取该属性拿到图片
    Icon = Image.FromFile(OFD.FileName);                                         
}

2. 给UserControl2添加图片接收属性

给UserControl2新增一个公开属性,用于将传入的图片绑定到内部的PictureBox控件(请把代码中的pictureBox1替换为你UserControl2中实际的PictureBox控件名):

public partial class UserControl2 : UserControl
{
    // 新增属性 开始
    public Image DisplayImage
    {
        set 
        { 
            // 赋值给内部PictureBox
            pictureBox1.Image = value; 
        }
    }
    // 新增属性 结束

    public UserControl2()
    {
        InitializeComponent();
    }

    // 原有其他代码不变
    private static UserControl2 _instance;
    public static UserControl2 Instance
    {
        get
        {
            if (_instance == null)
                _instance = new UserControl2();
            return _instance;
        }
    }
}

3. 修改Form1的切换逻辑,切换时传递图片

在ToggleButton勾选、切换到UserControl2的逻辑中,新增一行图片赋值代码即可:

if (toggleButton1.Checked)
{
    // 新增:将UserControl1的图片传递给UserControl2
    UserControl2.Instance.DisplayImage = UserControl1.Instance.Icon;

    if (!panel1.Controls.Contains(UserControl2.Instance))
    {
        panel1.Controls.Add(UserControl2.Instance);
        UserControl2.Instance.BringToFront();                     
    }
    else
    {
        UserControl2.Instance.BringToFront();                       
    }
}

可选优化

如果需要避免用户未选择图片就切换的异常,可以在赋值前加非空判断:

if(UserControl1.Instance.Icon == null)
{
    MessageBox.Show("请先在UserControl1中选择图片");
    toggleButton1.Checked = false;
    return;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:54:02