首页 > 解决方案 > 如何将图像从 UserControl1 传递到另一个 UserControl2(C#、Windows 窗体)

问题描述

我的 Form1 上有 2 个用户控件。它们在面板内相互堆叠。在 UserControl1 中,我使用 OpenFileDialog 从文件加载图像。在我的 Form1 上,我还有一个切换按钮,用户可以在其中切换两个用户控件。这工作得很好,但是一旦切换按钮设置为状态 - 切换按钮被选中,如何将图像从 UserControl1(包含面板上的图像)传递到 UserControl2(包含用于显示图像的图片框控件)?感谢您的任何提示!

用户控件1

    public partial class UserControl1 : UserControl
    {        
        private static UserControl1 _instance;
        public static UserControl1 Instance
        {
          get
            {
                if (_instance == null)
                    _instance = new UserControl1();

                return _instance;
            }
        }

        private Image _icon;
        public Image Icon
        {
            get { return _icon; }
            set { _icon = value; panel1.BackgroundImage = value; }
        }

        private void OpenToolStripMenuItem_Click(object sender, EventArgs e)
        {
            try
            {
                using (OpenFileDialog OFD = new OpenFileDialog())
                {
                    OFD.Filter = "Picture Files|*.bmp;*.jpg;*.gif;*.png;*.tif";

                    if (OFD.ShowDialog() == DialogResult.OK)
                    {                    
                        panel1.BackgroundImage = Image.FromFile(OFD.FileName);                                         
                    }
                }
            }
            catch (Exception ex)
            {
               MessageBox.Show(ex.Message);
            }
        }

用户控件2

    public partial class UserControl2 : UserControl
    {
        public UserControl2()
        {
            InitializeComponent();
        }

        private static UserControl2 _instance;
        public static UserControl2 Instance
        {
            get
            {
                if (_instance == null)
                    _instance = new UserControl2();
                return _instance;
            }
        }

表格1

private void ToggleButton1_CheckedChanged(object sender, EventArgs e)
{
            
   if (!toggleButton1.Checked)
   {
      if (!panel1.Controls.Contains(UserControl1.Instance))
      {
          panel1.Controls.Add(UserControl1.Instance);
          UserControl1.Instance.BringToFront();
      }
      else
      {
         UserControl1.Instance.BringToFront();                       
      }

   }

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

   }
}

标签: c#winformspanelpicturebox

解决方案


推荐阅读