C# 如何从另一种形式更改picturebox的图像?
如何从另一个窗体更改窗体PictureBox的图像? 实例Form2映像需要更改Form1映像 我试过这个C# 如何从另一种形式更改picturebox的图像?,c#,visual-studio,C#,Visual Studio,如何从另一个窗体更改窗体PictureBox的图像? 实例Form2映像需要更改Form1映像 我试过这个 exmp.Code 1 //This is for Form1 private void pictureBox1_MouseEnter(object sender, EventArgs e) { Form2 Fr2 = new Form2(); Fr2.Owner = this; }
exmp.Code 1
//This is for Form1
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
Form2 Fr2 = new Form2();
Fr2.Owner = this;
}
private void pictureBox2_Click(object sender, EventArgs e)
{
Fr2.Show();
}
//This is for Form2
private void pictureBox2_Click(object sender, EventArgs e)
{
try
{
(this.Owner as Form1).pictureBox1.Image = pictureBox2.Image;
}
catch
{
}
}
这个代码不起作用!
但如果我试试这个,它会起作用的
exmp.Code 1
//Form1
private void pictureBox1_Click(object sender, EventArgs e)
{
Form2 Fr2 = new Form2();
Fr2.Show();
Fr2.Owner = this;
}
//Form2
private void pictureBox2_Click(object sender, EventArgs e)
{
try
{
(this.Owner as Form1).pictureBox1.Image = pictureBox2.Image;
}
catch
{
}
}
但是我不能使用第二个代码,因为我需要单击ContextMenuStrip来打开Form2
任何问题请写在评论中 在表单1中,“Fr2”需要在表单级别声明,这样您就可以从“pictureBox1\u MouseEnter”和“pictureBox2\u Click”访问它。通过将“this”传递到Show()
来设置所有者
这是表格1:
private Form2 Fr2;
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
Fr2 = new Form2();
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (Fr2!=null && !Fr2.IsDisposed)
{
Fr2.Show(this); // <-- pass Form1 as the Owner
}
}
要访问Form1中的“pictureBox1”,您必须将其修饰符属性更改为public。这是否回答了您的问题?还有这个重复:它与PictureBox和图像非常不同,我知道如何使用值,但我不确定我是否知道如何使用图像。如果你能用一个解决方案来回答这个问题,那将是很有帮助的!图片框是一个专用控件。从窗体访问另一窗体控件的所有模式都有效,具体取决于场景和行为。“野生”解决方案是将窗体设置为单例。就我个人而言,我将所有的单实例表单创建为单实例表单,这样我就可以做任何我想做的事情,特别是表单有一个类型化的DataSet实例(没有像Delphi中那样的数据模块)。只有临时形式是传统的。谢谢,伙计!它起作用了。
private void pictureBox2_Click(object sender, EventArgs e)
{
Form1 Fr1 = this.Owner as Form1;
if (Fr1!=null)
{
Fr1.pictureBox1.Image = pictureBox2.Image;
}
}