Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将图像从面板图像加载到图片框_C#_.net_Winforms - Fatal编程技术网

C# 将图像从面板图像加载到图片框

C# 将图像从面板图像加载到图片框,c#,.net,winforms,C#,.net,Winforms,我在windows窗体应用程序中创建了一个图像库,使用将多个图像添加到面板中。现在,我想将单击的图像加载到另一个图片框中。有人能帮我吗 我的代码 OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "JPG|*.jpg|JPEG|*.jpeg|PNG|*.png"; ofd.Multiselect = true; DialogResult dr = ofd.ShowDialog(); if(dr==DialogResult.OK) {

我在windows窗体应用程序中创建了一个图像库,使用将多个图像添加到面板中。现在,我想将单击的图像加载到另一个图片框中。有人能帮我吗

我的代码

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "JPG|*.jpg|JPEG|*.jpeg|PNG|*.png";
ofd.Multiselect = true;
DialogResult dr = ofd.ShowDialog();
if(dr==DialogResult.OK)
{
    int x = 20;
    int y = 20;
    int maxHeight = -1;
    string[] files = ofd.FileNames;
    foreach (string img in files)
    {
        PictureBox pic = new PictureBox();
        pic.Image = System.Drawing.Image.FromFile(img);
        pic.SizeMode = PictureBoxSizeMode.StretchImage;
        pic.Location = new System.Drawing.Point(x, y);
        x += pic.Width + 10;
        maxHeight = Math.Max(pic.Height, maxHeight);
        if(x > this.pnlGallary.Width - 100)
        {
            x = 20;
            y += maxHeight + 10;
        }
        this.pnlGallary.Controls.Add(pic);
    }
}

请按如下所示替换代码:

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "JPG|*.jpg|JPEG|*.jpeg|PNG|*.png";
ofd.Multiselect = true;
DialogResult dr = ofd.ShowDialog();
if (dr == DialogResult.OK)
{
    int x = 20;
    int y = 20;
    int maxHeight = -1;
    string[] files = ofd.FileNames;
    foreach (string img in files)
    {
        PictureBox pic = new PictureBox();
        pic.Click += new EventHandler(pictureBox_Click);  // call the custom event for dynamic generated PictureBox
        pic.Image = System.Drawing.Image.FromFile(img);
        pic.SizeMode = PictureBoxSizeMode.StretchImage;
        pic.Location = new System.Drawing.Point(x, y);
        x += pic.Width + 10;
        maxHeight = Math.Max(pic.Height, maxHeight);
        if (x > this.pnlGallary.Width - 100)
        {
            x = 20;
            y += maxHeight + 10;
        }
        this.pnlGallary.Controls.Add(pic);
    }
}
并为动态生成的
PictureBox
添加公共单击事件处理程序,如下所示

void pictureBox_Click(object sender, EventArgs e)
{
    pictureBox1.Image = ((PictureBox)sender).Image;
}