得不到价值

时间:2014-01-12 09:47:33

标签: c# winforms picturebox

它应该从form1从textbox3获取文本,但它不是。预览表单是picturebox,我想通过picureBox1.Load(url_from_textbox3_form_form1)加载图像并更改表单大小(width = picturebox.image.with和height = same)。如果我在visual studio编辑器中粘贴文本,一切正常。

Form1中:

public string previewImageUrl
        {
            get { return textBox3.Text; }
        }

private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            if (textBox3.Text != null)
            {
                previewImage frm = new previewImage();
                frm.ShowDialog(this);
            }
            else
                MessageBox.Show("You're an idiot.", "LOL", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

previewImage表单:

public void load()
        {
            Form1 frm = new Form1();
            string url = frm.previewImageUrl;
            MessageBox.Show(url);
            try
            {
                pictureBox1.Load(url);
                this.Width = pictureBox1.Image.Width;
                this.Height = pictureBox1.Image.Height;
                MessageBox.Show(pictureBox1.Image.Height.ToString() + " ; " + pictureBox1.Image.Width.ToString());
            }
            catch (Exception)
            {
                MessageBox.Show("Something went wrong!", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

        private void previewImage_Load(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(load));
            thread.Start();
        }

不需要此线程。我只是尝试了多种方法而没有效果。

1 个答案:

答案 0 :(得分:1)

问题是你已经停止了一个像form1这样的新实例:

 Form1 frm = new Form1();

所以你真正得到的是form1的一个新实例(带有一个空textBox3)。 你需要做的是将值(TextBox3)传递给previewImage表单或者将值作为参数添加到previewImage表单中。

这是一种方法:

  1. 在previewImage表单中添加一个属性,如下所示:

    Public Property imageUrl As String

  2. 在Form1中你会这样做:

    if(textBox3.Text!= null)

    {

     previewImage frm = new previewImage();
    
     frm.imageUrl=TextBox3.Text;
    
     frm.ShowDialog(this);
    

    }