我想做什么......
我正在开发一个包含DigitalPersona SDK CaptureForm和EnrollmentForm的项目。该项目还包括一个主要表单,为了这个问题,我们将调用Form1。此表单包括一个名为picturebox1的图片框和一个名为button1的按钮。当我单击button1时,将执行以下代码。
private void button1_Click(object sender, EventArgs e)
{
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
}
在EnrollmentForm中,我有DigitalPersona SDK中提供的控件设置。它在图片框中捕获指纹,称为图片。我想做的是,当我关闭EnrollmentForm时,将图片框中捕获的图像传输到Form1上的图片框。
我尝试了什么......
我已尝试过很多我在stackoverflow和Google上找到的例子。第一种是创建FormClosing事件并尝试将图像从EnrollmentForm传递给Form1。我这样做是通过在Form1.Designer.cs中将Formbox1设置为Form1公开,然后将以下代码放入EnrollmentForm。
private void EnrollmentForm_FormClosing(object sender, FormClosingEventArgs e)
{
Form1 frm = new Form1();
frm.picturebox1.Image = Picture.Image;
}
编译没有问题,但一旦捕获图像并关闭表单,图像永远不会传输到Form1。做了进一步的研究,我发现一篇文章在模态打开第二个表单时提出了以下方法。
在Form1中,我将button1_Click修改为如下所示。
private void button1_Click(object sender, EventArgs e)
{
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
picturebox1.Image = enroll.SelectedImage;
}
然后在EnrollmentForm中添加了以下代码。
public Image SelectedImage
{
get { return Picture.Image; }
}
再次,这编译。捕获了指纹,但是当EnrollmentForm关闭时,图像从未转移到Form1上的picturebox1。
我真的不确定我在这里做错了什么。最终,Form1将包含多个图片框,并将使用EnrollmentForm填充每个图片框。我感谢任何协助。
未来读者的更新:只是想我添加了最终有效的内容。事实证明,SDK中的EnrollmentForm可以从CaptureForm获取图片。我最终让按钮打开了CaptureForm,并尝试将图像传输到主窗体并且它正常工作。
答案 0 :(得分:2)
步骤1:在enrollmentForm中创建一个类似enImage的图像类型公共变量,并在注册表单中将结束事件设置为enImage = yourpictureboxcontrolname.Image;
步骤2:在主窗体中创建另一个名为mainImage的图像类型变量,并在按钮单击事件中添加此代码
EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
mainImage = enroll.enImage;
picturebox1.Image=mainImage;
我测试了这段代码并且它正在运行。
答案 1 :(得分:0)
在您的主要表格中,创建一个属性,即
public Image img
{
set { pictureBox1.Image = value; }
}
当您在某个事件处理程序中调用第二个表单时,请传递当前表单的引用,您需要在该表单上显示该图像,即
private void button1_Click_1(object sender, EventArgs e)
{
Form2 fm2 = new Form2(this);
fm2.Show();
}
在您的第二个表格中,使用我们通过的参考资料初始化Form1
private Form1 mainForm = null;
public Form2(Form callingForm)
{
mainForm = callingForm as Form1;
InitializeComponent();
}
最后在第二张表格关闭之前,将图像设置为Form1,如
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
this.mainForm.img = pictureBox1.Image;
}
这是经过测试的代码,它100%有效。 希望它有所帮助。