2014-01-12 64 views
-1

它应该从form1中获取来自textbox3的文本,但它不会。预览表单是picturebox,我想通过picureBox1.Load(url_from_textbox3_form_form1)加载图像并更改表单大小(width = picturebox.image.with和height =相同)。如果我在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(); 
     } 

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

+2

请澄清更好发生了什么 –

+1

我正在创建Form1的一个新实例,从来没有显示它的奇怪的感觉,但想读的内容其textbox3。顺便说一下,如果您在设计时定义了textbox3,它永远不会为空。 – Steve

+2

@Notoric'Form1'打开'preview1mage',它创建'Form1'的新实例,而不显示它,并使用'previewImageUrl'。这与以前的'Form1'不一样。 – dkozl

回答

1

的事情是,你已经ceated在Form1的新实例是这样的:

Form1 frm = new Form1(); 

那么你真的是到这儿是在Form1(用空textBox3)的新实例。 您需要做的是将值(TextBox3)传递到previewImage窗体或将该值作为参数添加到previewImage窗体中。

这里是一个办法做到这一点:

  1. 添加的属性在previewImage形式,像这样:

    公共财产IMAGEURL作为字符串

  2. 在Form1你会这样做:

    if(textBox3.Text!= null)

    {

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

    }