|
楼主 |
发表于 2021-8-24 13:57:54
|
显示全部楼层
广东省佛山市
问题已解决了,主要是涉及到窗体间传值。经过查询资料,有多种方式能实现。有两种方式可以实现实时传值,也是我采用的方式。
1。用委托方式,也是就二楼的建议的
在子窗体中建立委托
namespace 图片框picturebox
{
public delegate void setTextValue(string path);//1、声明一个委托
public partial class Form2 : Form
{
public event setTextValue setFormTextValue;//2、声明一个委托类型的事件
public Form2()
{
InitializeComponent();
}
private void button3_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "全部图片|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
label1.Text = ofd.FileName;
setFormTextValue(ofd.FileName);//3、准备要回传的数据。
}
}
}
在主窗体中
private void button5_Click(object sender, EventArgs e)//按键事件中在弹出子窗体前要初始化事件
{
Form2 frm2 = new Form2();
frm2.setFormTextValue += new setTextValue(setImage);//4、初始化事件
frm2.Show();
}
//5、事件具体实现
public void setImage(string path)//自定义事件用于改变图片框
{
this.pictureBox1.Image = Image.FromFile(path);
}
2.静态函数调用窗体控件,此方法较为简单方便
在主窗体中
public partial class Form1 : Form
{
public static Form1 minfrm;//设置静态
public Form1()
{
minfrm = this;
InitializeComponent();
}
在子窗体中 private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "全部图片|*.*";
if (ofd.ShowDialog() == DialogResult.OK)
{
label1.Text = ofd.FileName;
Form1.minfrm.pictureBox1.Image = Image.FromFile(ofd.FileName);//在此调用
}
*************************************************************************
以上我是用得较好的解决方案,供大家参考!
|
|