它应该从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();
}
不需要此线程。我只是尝试了多种方法而没有效果。
答案 0 :(得分:1)
问题是你已经停止了一个像form1这样的新实例:
Form1 frm = new Form1();
所以你真正得到的是form1的一个新实例(带有一个空textBox3)。 你需要做的是将值(TextBox3)传递给previewImage表单或者将值作为参数添加到previewImage表单中。
这是一种方法:
在previewImage表单中添加一个属性,如下所示:
Public Property imageUrl As String
在Form1中你会这样做:
if(textBox3.Text!= null)
{
previewImage frm = new previewImage();
frm.imageUrl=TextBox3.Text;
frm.ShowDialog(this);
}