我想在加载form2
时打开form1
。另外,我想在form2
中触发动作时更改form1
中PictureBox的图像。
要在加载form2
时打开form1
,请使用以下代码:
private void MONITOR3_Load(object sender, EventArgs e)
{
MONITOR4 mo4 = new MONITOR4(this);
mo4.Show();
}
要在form2
中更改PictureBox的图像,我使用了以下代码,必须在满足条件后运行该代码:
if (textBox1.Text == @"QUEBEC - ALPHA - TANGO - ALPHA - ROMEO - ")
{
MONITOR4 mo4 = new MONITOR4(this);
mo4.pictureBox1.Image = Image.FromFile("D:/QResources/images/HIA.jpg");
}
答案 0 :(得分:1)
您当前的代码有两个问题:
public
,但您不应该这样做,也没有必要。窗体是这方面的任何其他类:在窗体上创建一个公共方法,该方法提供修改私有属性的方法,而无需直接将控件的属性暴露给直接访问。在这里,我正在以Monitor4
格式创建对Monitor3
的引用:
Monitor4 mo4 = null;
此引用将用于调用UpdatePictureBox
的公共方法(Monitor4
)。
Monitor3
格式:
(我正在使用TextBox的TextChanged
事件来选择要在Monitor4
PictureBox中显示的图像。当然,这可能是Validate
事件或与您的事件一致的任何其他事件设计)
public partial class Monitor3 : Form
{
Monitor4 mo4 = null;
private void Monitor3_Load(object sender, EventArgs e)
{
mo4 = new Monitor4();
//Show Monitor4 on the right side of this Form
mo4.Location = new Point(this.Right + 10, this.Top);
mo4.Show(this);
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
string NewText = textBox1.Text;
switch (NewText)
{
case "[Some text 1]":
mo4.UpdatePictureBox(@"[Images1 Path]");
break;
case "QUEBEC - ALPHA - TANGO - ALPHA - ROMEO - ":
mo4.UpdatePictureBox(@"[Images2 Path]");
break;
case "[Sme text 3]":
mo4.UpdatePictureBox(@"[Images3 Path]");
break;
}
}
}
Monitor4
表单:
public partial class Monitor4 : Form
{
public void UpdatePictureBox(string BitmapImage)
{
if (File.Exists(BitmpImage))
{
if (this.pictureBox1.Image != null)
this.pictureBox1.Image.Dispose();
this.pictureBox1.Image = (Image)Image.FromFile(BitmapImage, true).Clone();
}
}
}
抽样结果: