2014-03-29 74 views
-3

我有两种不同形式的图像盒。 Form1:firstpicturebox form2:picturebox1 我想将firstpicturebox的图像传输到picturebox1。 因此,任何人都可以帮助并提供相同的解决方案。 在此先感谢。两种不同形式的图像盒

回答

0

可以使用窗体2构造

试试这个发送:

Form1中:

private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 form2 = new Form2(pictureBox1.Image); 
     form2.Show(); 
    } 

表2:

public Form2(Image pic1) 
    { 
     InitializeComponent(); 
     pictureBox1.Image = pic1; 
    } 
+0

这里,我没有使用form1的firstpicturebox。 – VGI

+0

如何在新的form2()..内访问firstpicturebox? – VGI

0

你真的问两个中的问题一个:

1 - 如何获取一个PictureBox的内容到另一个PictureBox?

2 - 如何从另一个窗体访问一个窗体的控件等?

问题1是直截了当:pictureBox1.Image = pictureBox2.Image;

回答问题2不难要么但也有很多方法可以做到这一点,选择一个可能取决于你想用这两种形式做什么。

基本的方法是始终获取对其他表单的有效引用。

这里是一个通用的方法:

  • 声明其它形式的类的全局变量在每个表单中。
  • 让这些参考指向在正确的时刻
  • 制作您想要访问的任何控件,属性等;对于控件,您可以创建一个额外的引用并填充它,也可以去设计器并将其范围从私有变为公共。

什么是正确的时刻?假设Form1将在PROGRAMM的启动时创建,并创建窗口2通过在Form1一些动作你可以得到参考FORM2在那里,当你创建并显示:

form2 = new Form2(this); 
    form2.Show(); 

这可能是点击一个按钮,甚至在form1的加载事件。

请注意,我已经在构造函数中提交了对this的引用!这是将引用传递给form1到新窗体的一种很好的方法。因此,form2中的构造函数应该如下所示:

public Form2(Form1 form1_) 
{ 
    InitializeComponent(); 
    form1 = form1_; 
} 

最后一步是让您需要访问的控件为公共控件。去设计师。CS文件,并从

private System.Windows.Forms.PictureBox pictureBox1; 

改变声明

public System.Windows.Forms.PictureBox pictureBox1; 

完成。

或者...

如果你有许多形式,所有需要访问一个图片框,你也可以试试这个:在programm.cs声明静态全局引用它的文件是这样的:

static void Main() 
{ 
    Application.EnableVisualStyles(); 
    Application.SetCompatibleTextRenderingDefault(false); 
    Application.Run(new Form1()); 
} 

public static PictureBox thePictureBox; 

然后填写在Form1参考

Program.thePictureBox = pictureBox1; 

现在,你可以参考它在所有其他形式,以及:

myNextPictureBox42.Image = Program.thePictureBox.Image; 
+0

这两个pictureboxes是不同的形式..我已经让他们公开。 – VGI

+0

除此之外,你能否提出任何其他方法,因为我想在这种情况下将多种形式链接到一种形式 – VGI

+0

好!所以你所需要的只是至少一个引用另一个表单,就像我解释的那样。然后你可以写在form1中: pictureBox.Image = form2.pictureBox.Image。 当然你的名字是你命名的任何东西;东西meanigfull我建议,不只是1,2,3 .. – TaW