2014-01-12 2 views
-1

Он должен получить текст из текстового поля3 из формы1, но это не так. Форма предварительного просмотра - это изображение, я хочу загрузить изображение с помощью picureBox1.Load (url_from_textbox3_form_form1) и изменить размер формы (width = picturebox.image.with и height = same). Если я вставляю текст в visual studio editor, все работает отлично.get не получает значение

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, никогда не показывая его, но при попытке прочитать содержимое его текстовое поле3. И, кстати, если вы определяете textbox3 во время разработки, он никогда не будет равен нулю. – Steve

+2

@Notoric 'Form1' открывает' previewImage', который создает новый экземпляр 'Form1', не показывая его, и принимает' previewImageUrl'. Это не тот же пример, что и предыдущий 'Form1' – dkozl

ответ

1

Дело в том, что вы ceated новый экземпляр Form1, как это:

Form1 frm = new Form1(); 

Так что вы на самом деле получает здесь новый экземпляр Form1 (с пустым textBox3). Что вам нужно сделать, так это передать значение (TextBox3) в форму previewImage. Или добавить значение в качестве параметра в форму previewImage.

Вот способ сделать это:

  1. Добавьте свойство в виде previewImage, как это:

    Public ImageUrl Property As String

  2. В вас Form1 сделал бы так:

    if (textBox3.Text! = null)

    {

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

    }

Смежные вопросы