首页 > 解决方案 > 将图片框的图像从用户控件更改为带有图像链接的表单

问题描述

当我更改组合框中的值时,我试图从放置在 form1 中的用户控件更改 form2 中图片框的图像。我希望图像从像“https://i.imgur.com/xxxxxx.png”这样的图像链接流式传输。这就是我所做的。

这是带有 usercontrol 的 form1。

 private void combobox_TextChanged(object sender, EventArgs e)
        {
            string newText = combobox.Text;
            Form2 crsF = new Form2();
            if (check_Enabled.Checked)
            {
                switch (newText)
                {
                    case "White":
                        crsF.UpdatePictureBox("https://i.imgur.com/HDuKdEh.png");
                        break;
                    case "Red":
                        crsF.UpdatePictureBox("https://i.imgur.com/HDuKdEh.png");
                        break;
                }
            }
        }

这是我想改变形象的form2

            public void UpdatePictureBox(string streamLink)
            {
              var request = WebRequest.Create(streamLink);

              using (var response = request.GetResponse())
              using (var stream = response.GetResponseStream())
            {
                pictureBox1.Image = Bitmap.FromStream(stream);
                this.Refresh();
            }
        }

我用这段代码开始form2。

Form2 csrF;
        private void combobox_CheckedChanged(object sender, EventArgs e)
        {
            crsF = new Form2();
            if (combobox.Checked)
            {
                crsF = new CrosshairForm();
                crsF.Show();
            }
            else if (!combobox.Checked)
            {
                Form2 obj = (Form2)Application.OpenForms["Form2"];
                obj.Close();
            }
        }

我尝试了很多不同的事情,我喜欢自己解决问题,我真的花了一些时间在这个功能上,但我无法做到正确,感谢所有帮助。

标签: c#winforms

解决方案


这是解决方案!

表格 1

using System;
using System.Windows.Forms;

namespace WinFormsApp2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private string Link;

        private void combobox_SelectedIndexChanged(object sender, EventArgs e)
        {
            string newText = combobox.Text;
            switch (newText)
            {
                case "White":
                    Link = "https://i.pinimg.com/564x/fc/80/7c/fc807ccc8b44a604c276614ed29f5067.jpg";
                    break;
                case "Red":
                    Link = "https://i.imgur.com/HDuKdEh.png";
                    break;
            }
        }

        private void check_Enabled_CheckedChanged(object sender, EventArgs e)
        {
            if(!string.IsNullOrEmpty(Link))
            {
                Form2 crsF = new Form2();
                if (check_Enabled.Checked)
                {
                    crsF.UpdatePictureBox(Link);
                    crsF.Show();
                }
                else if (!check_Enabled.Checked)
                {
                    Form2 obj = (Form2)Application.OpenForms["Form2"];
                    if (obj != null)
                    {
                        obj.Close();
                    }
                }
            }
        }
    }
}

表格 2

    using System.Windows.Forms;

    namespace WinFormsApp2
    {
        public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            public void UpdatePictureBox(string streamLink)
            {
                System.Net.WebRequest request = System.Net.WebRequest.Create(streamLink);
    
                System.Net.WebResponse response = request.GetResponse();
                System.IO.Stream stream = response.GetResponseStream();
                pictureBox1.Image = System.Drawing.Bitmap.FromStream(stream);
                Refresh();
            }
        }
    }

推荐阅读