如何将图像从一种形式传递到另一种形式?

Posted

技术标签:

【中文标题】如何将图像从一种形式传递到另一种形式?【英文标题】:How to pass an image from one form to another one? 【发布时间】:2022-01-13 17:55:44 【问题描述】:

我想将一张图片从 form1 传递到 form2,我通过在打开的文件对话框中选择它来获取图片,我想让它在按下按钮后出现在第二个表单 (form2) 上

这是打开文件对话框:

private void pictureBox1_Click(object sender, EventArgs e) 
    OpenFileDialog ofd = new OpenFileDialog();
    ofd.Filter = "Imagenes|*.jpg;*.png;*.gif";
    ofd.Title = "Profile picture";

    if (ofd.ShowDialog() == DialogResult.OK) 
       string urlArchivo = ofd.FileName;
       string nombre = ofd.SafeFileName;

       Userpic.Load(urlArchivo);
       Subirfoto.Visible = false;
    


private void Button1_Click(object sender, EventArgs e) 
    if (...) 
        //MAKE THE PIC APPEAR ON FORM2
    

【问题讨论】:

是winform吗? 是,c#.NET . SDEscobedo 的回答都是很好的建议,但我想知道它的哪一部分 @MEEXTTv 了解或不了解如何实现。我怀疑关于如何创建两个表单并维护对它们的引用还有更基本的事情要解释。一旦您可以在Form1 类中定义的函数中访问Form2 的实例(例如form2),剩下的就相对简单了。原始问题中没有证据表明已经建立了这么多。应修改此问题以显示对 Form1 和 Form2 实例的引用当前存储在何处。 【参考方案1】:

您可以将路径保存在公共字符串变量urlArchivo 中,然后在启动点击事件时将图像加载到位于form2 的第二个图片框中:

private void Button1_Click(object sender, EventArgs e) 
    if (urlArchivo != "") 
         // display image in picture box 
         pictureBox2.Image = new Bitmap(urlArchivo)
    

您也可以直接进行引用(这样您就不会两次加载图像):

pictureBox2.Image = form1.pictureBox1.Image

更好的是,您可以在表单中定义公共属性并将图像从一个到另一个:

private void Button1_Click(object sender, EventArgs e) 
    //set image of form2 as image of form1
    form2.myImage = form1.myImage

myImage 将在每种形式中定义为property。您可以在here 表单中查看定义属性的详细信息。

【讨论】:

以上是关于如何将图像从一种形式传递到另一种形式?的主要内容,如果未能解决你的问题,请参考以下文章

将数据从一种形式传递到另一种形式的问题

将数据从一种形式传递到另一种形式(datagridview)

MSoft Access - 将变量从一种形式传递到另一种形式

我如何从一种形式访问变量到另一种形式

如何使用dto和C#窗口形式将信息从一种形式传输到另一种形式?

从一种形式获取价值并将其传递给另一种形式