可以说我有两种形式(Form1和Form2)。如何从对话框中更改Form1中的某些内容?
- Form1上有一个PictureBox
- 窗体2我有一个OpenFileDialog
Form1中是主要形式,所以,当我运行该项目,我看到Form1上。
如何从Form2更改Form1中的PictureBox中的图像?
可以说我有两种形式(Form1和Form2)。如何从对话框中更改Form1中的某些内容?
Form1中是主要形式,所以,当我运行该项目,我看到Form1上。
如何从Form2更改Form1中的PictureBox中的图像?
你可以很简单地做到这一点。 首先改变你的代码(在Form1中),显示窗体2到看起来像这样:
<variable-of-type-Form2>.ShowDialog(this);
,或者如果你不想窗口2是模态
<variable-of-type-Form2>.Show(this);
下一页时,你有路径的图像,你可以访问的PictureBox这样
((PictureBox)this.Owner.Controls["pictureBox1"]).Image=Image.FromFile(<filename>);
假设您有图片框在Form1上的名称为 “pictureBox1”
How do I pass a value from a child back to the parent form?
基本上,公开该获取的一些属性打开文件对话框返回的值,让父窗体抓住它。
将一个窗体作为参数传递给第二个窗体的构造函数,或添加一个传递该引用的方法。在你参考了你的表单之后,你可以用from来做任何你想要的。
是否将图片框分享为公众会员取决于您。但是,我建议以第一种形式公开使用公共方法SetImage()
。第二种形式将称为form1.SetImage()
。
[更新]
等待,为什么你需要从OpenFileDialog的设置图像,你只需要在对话框中收到文件名,然后打开文件并加载到表单中。
像这样:
private void button1_Click(object sender, EventArgs e)
{
using (var dialog = new OpenFileDialog())
{
var result = dialog.ShowDialog();
if (result != DialogResult.OK)
return;
pictureBox1.Image = Image.FromFile(dialog.FileName);
}
}
这是代码Form1的内部。
[更新]
这里的基本思想是如何从其他接入一种形式。
public class MyForm1 : Form
{
public MyForm1()
{
InitializeComponent();
}
public void SetImage(Image image)
{
pictureBox1.Image = image;
}
private void button1_Click(object sender, EventArgs e)
{
var form2 = new Form2(this);
form2.Show();
}
}
public class MyForm2 : Form
{
private MyForm1 form1;
public MyForm2()
{
InitializeComponent();
}
public MyForm2(MyForm1 form1)
{
this.form1 = form1;
}
private void button1_Click(object sender, EventArgs e)
{
form1.SetImage(yourImage);
}
}
理想情况下,您想要在ModelViewController模式中构造代码。然后,只需在模型中为图片框中的图片添加参考。当与Form2中的OpenFileDialog进行交互时,您可以调用模型适配器接口挂钩到视图(Form1和Form2)中以更改模型中的图像。总之,您需要从视图到模型的回调。如果您不想将代码重新设计为MVC,只需拥有一个共享对象来保存Form1和Form2在构造函数中接收的图像引用,以便它们都可以对其进行修改。
在Program.cs文件中,您可以设置任何值,FormOptions或窗体的实例。
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var frm = new Form1();
// Add the code to set the picturebox image url
Application.Run(frm);
}
此外,您可以将构造函数添加到Form1并通过构造函数传递参数。
你能更具体吗? – Pedrum 2011-05-24 04:11:28
这是重新解决问题的好办法......除非您有要求以不同形式设置图片。 – 2011-05-24 04:30:47
我知道这个... 如何改变form1中picbox的图片从form2 ...? – Pedrum 2011-05-24 04:53:45