试图在“图片框”中更改图片。但是不会起作用。没有错误,警告。
我有2种形式,一种是“消息框”,一种是主要形式。如果我尝试通过其他方法(例如:Form1_load)更改图像,则可以使用。
Form1:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WindowsFormsApp1;
namespace jatek
{
public partial class Form1 : Form
public void Eldontesboss(short adat)
{
MessageBox.Show("Number:" + adat); //this is appears,but ...
box.Image = WindowsFormsApp1.Properties.Resources.alap; //this is not work.
}
}
}
Form2:
using jatek;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
public partial class Form2 : Form
{
private void button1_Click(object sender, EventArgs e)
{
Form1 foo = new Form1();
foo.Eldontesboss(1);
this.Close();
}
private void button2_Click(object sender, EventArgs e)
{
Form1 foo = new Form1();
foo.Eldontesboss(2);
this.Close();
}
private void button3_Click(object sender, EventArgs e)
{
Form1 foo = new Form1();
foo.Eldontesboss(3);
this.Close();
}
}
}
更改PictureBox图像。
答案 0 :(得分:0)
您正在创建从未显示的Form1
实例;它们在内存中只是看不见的。如果要更改显示的 CURRENTLY 中的图片框中的图像Form1
,则需要引用该特定实例。从您的描述中还不清楚哪种形式是“主”形式,哪种形式是“消息”形式,但是我认为Form1是主要形式,而Form2是消息。此外,我假设Form1正在创建Form2的实例。在这种情况下,传递引用的一种方法是在调用Owner
时设置Show()
属性,如下所示:
// ... in Form1, when Form2 is created ...
Form2 f2 = new Form2();
f2.Show(this); // pass reference to Form1, into Form2
现在,在Form2中,您可以将Owner
属性转换回类型Form1
并使用它:
// ... in Form2, after being displayed with `Show(this)` back in `Form1` ...
private void button1_Click(object sender, EventArgs e)
{
Form1 foo = (Form1)this.Owner;
foo.Eldontesboss(1);
this.Close();
}